2012-04-14 45 views
2

我有一个相当大的SQL支持的ASP.NET项目,它使用实体框架与数据库进行交互。控制创建实体框架ObjectContext的频率

我的问题是,我应该创建一个由每个类/方法中的edmx/designer文件定义的ObjectContext的实例 - 或者 - 将它包装在一个静态类中,该类将实例化onload并基本处理通过一个实例的所有请求。

我将有多个用户使用ObjectContext读取和更新数据库,并发性和线程安全性是我最关心的问题。

编辑: 此代码最终将在IIS中运行并易于回收。

回答

1

在大多数情况下,您只需要每个请求的单个上下文。每个请求只有特殊场景可能需要更多上下文,但never share context among requests

0

ObjectContext类不是线程安全的。在多线程 的情况下,无法确保ObjectContext中的对象的数据完整性 。

来源:http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.aspx

因此,最好的办法是使用每个HTTP请求的ObjectContext的。制作一个RepositoryBase类,每个存储库扩展自RepositoryBase,并定义常见的CRUD操作(,最好是通用),并创建一个新的实例,仅在请求该实例时为null