码迷,mamicode.com
首页 > 编程语言 > 详细

EF上下文对象创建之线程内唯一

时间:2016-01-20 20:46:51      阅读:434      评论:0      收藏:0      [点我收藏+]

标签:

在一次请求中,即一个线程内,若是用到EF数据上下文对象,就创建一个,那么会造成数据混乱,每次创建的对象执行相应的数据库操作,此同时,其他的EF对象内获得的数据可能已经是“过期”的了。即这个数据已经变动过。这就是数据混乱,为了解决这个问题,关键就是对象的创建问题。

这里首先想到单例模式,不过在这里,不适合用,原因是使用单例模式,会使EF对象得不到及时的资源释放。

第二种方式即保证在线程内对象唯一,如何保证呢,通过微软ASP机制的HttpContext对象,这个对象在线程中是唯一的,所以我们在HttpContext中创建或者说添加一个对象,即把我们要创建的EF数据上下文对象添加到HttpContext中。

如何添加呢,可以在工具类(Common.cs)中添加这个个方法去创建

if(HttpContext.Current.Item["db"] == null)
{
  ModelContainer db1 = new   ModelContainer();//ModelContainer 这个创建的EF上下文对象的名称,Model是实体模型的名称,自己命名的
  HttpContext.CurrentItems["db"] = db1;  
 //EF数据上下文对象添加到HttpContext中
}
else
{
    //说明已经添加到HttpContext中了
}

 

EF上下文对象创建之线程内唯一

标签:

原文地址:http://www.cnblogs.com/joeymary/p/5146355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!