/// <summary> /// 帮我们返回当前线程内的数据库上下文,如果当前线程内没有上下文,那么创建一个上下文,并保证 /// 上下文是实例在线程内部唯一 /// 在EF4.0以前使用ObjectsContext对象 /// </summary> /// <returns></returns> public static DataModelContainerEntities GetCurrentDbContext() { //当第二次执行的时候直接取出线程嘈里面的对象 //CallContext:是线程内部唯一的独用的数据槽(一块内存空间) //数据存储在线程栈中 //线程内共享一个单例 DataModelContainerEntities dbcontext = CallContext.GetData("DbContext") as DataModelContainerEntities; //判断线程里面是否有数据 if (dbcontext == null) //线程的数据槽里面没有次上下文 { dbcontext = new DataModelContainerEntities(); //创建了一个EF上下文 //存储指定对象 CallContext.SetData("DbContext", dbcontext); } return(dbcontext); }
public static void ExecTranScript(List <string> commandList) { using (DataModelContainerEntities db = new DataModelContainerEntities()) { db.Database.Connection.ConnectionString = ConfigHelper.GetConnection("DataModelContainerEntities") + "Password="******"SQL logic error or missing database\r\nduplicate column name")) { trans.Rollback(); throw; } } trans.Commit(); } }