111,097
社区成员




public class ExamBatchInfo
{
DataBaseControl _DBControl = DataBaseControl.getSingleton();
public virtual IEnumerable<ExamRoomInfo> ExamRoomList
{
get
{
var query = from r in _DBControl.ExamRoom_GetList(YearTermID, CourID, BatchOrder).AsEnumerable()
select ExamRoomInfo.GetInfo(r);
return query;
}
}
#region 初始化与转换
private void InitClass(exam_Batch dbtable)
{
if (dbtable != null)
{
this.YearTermID = dbtable.YearTermID;
this.CourID = dbtable.CourID;
this.BatchOrder = dbtable.BatchOrder;
this.ExamWeek = dbtable.ExamWeek;
this.ExamDate = dbtable.ExamDate;
this.BatchName = dbtable.BatchName;
this.TeachList = dbtable.TeachList;
this.SelectedNum = dbtable.SelectedNum;
this.WeekSection = dbtable.WeekSection;
this.WeekTime = dbtable.WeekTime;
this.TimeExplain = dbtable.TimeExplain;
this.BatchType = dbtable.BatchType;
this.BatchFlag = dbtable.BatchFlag;
this.Inspector1 = dbtable.Inspector1;
this.Inspector1Name = dbtable.Inspector1Name;
this.Inspector2 = dbtable.Inspector2;
this.Inspector2Name = dbtable.Inspector2Name;
this.Inspector3 = dbtable.Inspector3;
this.Inspector3Name = dbtable.Inspector3Name;
this.Operator = dbtable.Operator;
this.LastDate = dbtable.LastDate;
}
}
public ExamBatchInfo()
{
this.YearTermID = string.Empty;
this.CourID = string.Empty;
this.BatchOrder = 0;
this.ExamWeek = 0;
this.ExamDate = null;
this.WeekSection = string.Empty;
this.WeekTime = 3;
this.TimeExplain = string.Empty;
this.BatchFlag = 0;
this.Inspector1 = string.Empty;
this.Inspector1Name = string.Empty;
this.Inspector2 = string.Empty;
this.Inspector2Name = string.Empty;
this.Inspector3 = string.Empty;
this.Inspector3Name = string.Empty;
this.Operator = string.Empty;
this.LastDate = DateTime.Now;
}
public ExamBatchInfo(exam_Batch dbtable)
{
InitClass(dbtable);
}
}
}
/// <summary>
/// 重置批次(包括删除考场、删除学生、任务还原为未安排状态、批次删除)
/// </summary>
public void Reset()
{
if (BatchOrder > 0)
{
using (System.Transactions.TransactionScope transactionScope = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required))
{
#region 更新考试任务
foreach (var examTaskInfo in ExamTaskList)
{
examTaskInfo.ExamTask_BatchOrder = 0;
examTaskInfo.Update();
}
#endregion
#region 删除批次
exam_Batch batch = ConvertDBModel();
_DBControl.ExamBatch_Delete(batch);
#endregion
transactionScope.Complete();
}
}
else
throw new Exception("不存在批次,无法重置!");
}
public class ExamTaskInfo
{
DataBaseControl _DBControl = DataBaseControl.getSingleton();
#region 属性
public string ExamTask_YearTermID { get; set; }
public string ExamTask_CourID { get; set; }
public short ExamTask_CourOrder { get; set; }
public int ExamTask_BatchOrder { get; set; }
public string ExamTask_ArrangeType { get; set; }
public Enum_ExamTaskType ExamTask_ArrangeTypeEnum { get; set; }
public DateTime? ExamTask_GradeEndTime { get; set; }
public string ExamTask_Operator { get; set; }
public DateTime? ExamTask_LastDate { get; set; }
#endregion
#region 初始化
private void InitClass(exam_Task dbTable)
{
this.ExamTask_YearTermID = dbTable.YearTermID;
this.ExamTask_BatchOrder = dbTable.BatchOrder;
this.ExamTask_CourID = dbTable.CourID;
this.ExamTask_CourOrder = dbTable.CourOrder;
this.ExamTask_ArrangeType = dbTable.ArrangeType;
this.ExamTask_GradeEndTime = dbTable.GradeEndTime;
this.ExamTask_Operator = dbTable.Operator;
this.ExamTask_LastDate = dbTable.LastDate;
}
private exam_Task ConvertDBModel()
{
exam_Task task = new exam_Task();
task.YearTermID = ExamTask_YearTermID;
task.BatchOrder = this.ExamTask_BatchOrder;
task.CourID = ExamTask_CourID;
task.CourOrder = ExamTask_CourOrder;
task.ArrangeType = EnumUtil.GetEnumShowName(typeof(ClEas.Model.Exam.ExamTaskInfo.Enum_ExamTaskType), (int)ExamTask_ArrangeTypeEnum);
task.GradeEndTime = ExamTask_GradeEndTime;
task.Operator = ExamTask_Operator;
task.LastDate = ExamTask_LastDate;
return task;
}
public ExamTaskInfo()
{
this.ExamTask_YearTermID = string.Empty;
this.ExamTask_BatchOrder = 0;
this.ExamTask_CourID = string.Empty;
this.ExamTask_CourOrder = 0;
this.ExamTask_ArrangeTypeEnum = Enum_ExamTaskType.SchoolType;
this.ExamTask_GradeEndTime = null;
this.ExamTask_Operator = string.Empty;
this.ExamTask_LastDate = DateTime.Now;
}
public ExamTaskInfo(exam_Task dbTable)
{
if (dbTable != null)
{
InitClass(dbTable);
}
}
#endregion
#region 方法
public void Update()
{
exam_Task task = ConvertDBModel();
_DBControl.ExamTask_Update(task);
}
#endregion
}
using (System.Transactions.TransactionScope transactionScope = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required))
{
foreach (System.Data.DataRow dr in dt.Rows)
{
//这里将来切换为MODEL,不应该直接读取数据库
string studid = dr["学号"].ToString().Trim();
string name = dr["姓名"].ToString().Trim();
string grade = string.Empty;
if (dt.Columns.Contains("成绩"))
{
grade = dr["成绩"].ToString().Trim();
}
e_Student student = _DBControl.Student_GetInfo(studid);
if (student != null && student.StudName == name)
{
ECItemTempGradeInfo tempGrade = new ECItemTempGradeInfo();
tempGrade.ECGroupID = ECGroupID;
tempGrade.StudID = studid;
tempGrade.ECGrade = grade;
tempGrade.Operator = Operator;
tempGrade.Insert();
}
else
throw new Exception(studid + "学号与姓名无法对应!请检查是否有误!");
}
SelectedNum = _DBControl.ECItemGrade_GetList(ECGroupID).Count();
Update();
}
public interface IMyDbTransaction
{
MyDbConnection Connection{get;}
}
public interface IMyDbConnection
{
IMyDbTransaction BeginTransaction();
}
前边的接口定义了一个“事务”,这个事务可以被从你的数据库连接而创建,也可以用来创建一个数据库连接。
实际上,假设你确定在6个月内并不会重构,那么你甚至根本不用自己定义接口,而是使用 ADO.NET 或者 EF 等等的现成的类型或者接口用在你的 BLL 层编程中,也是可以的。
程序代码的重构是永恒的,保持静止在一个“阶段”之内才是必须的。无论如何你定义了自己的抽象“事务”,早晚有一天都要重构。我可以一天之内修改500个重构时的核心架构的bug,而并不担心第二天修改好之后的系统运行结果不可靠,因为对我来说保证稳定性的关键不在于僵化教条的文档、而在于高强度的测试驱动开发工程方法。
基于此,你就会不会过度洁癖地要求程序设计必须考虑到6个月以后的架构演进细节,只要保持眼前的框架的不重复过去的失误,就可以了。
public IQueryable<exam_Room> ExamRoom_GetList(TeachEasEntities db)
{
return db.exam_Room;
}
比如这样的?