控制创建实体框架ObjectContext的频率
问题描述:
我有一个相当大的SQL支持的ASP.NET项目,它使用实体框架与数据库进行交互。控制创建实体框架ObjectContext的频率
我的问题是,我应该创建一个由每个类/方法中的edmx/designer文件定义的ObjectContext的实例 - 或者 - 将它包装在一个静态类中,该类将实例化onload并基本处理通过一个实例的所有请求。
我将有多个用户使用ObjectContext读取和更新数据库,并发性和线程安全性是我最关心的问题。
编辑: 此代码最终将在IIS中运行并易于回收。
答
ObjectContext类不是线程安全的。在多线程 的情况下,无法确保ObjectContext中的对象的数据完整性 。
来源:http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.aspx
因此,最好的办法是使用每个HTTP请求的ObjectContext的。制作一个RepositoryBase
类,每个存储库扩展自RepositoryBase
,并定义常见的CRUD操作(,最好是通用),并创建一个新的实例,仅在请求该实例时为null
。