2

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

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

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

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

4

2 回答 2

1

在大多数情况下,每个请求只需要一个上下文。只有特殊场景才能在每个请求中需要更多上下文,但绝不会在请求之间共享上下文

于 2012-04-14T09:45:36.017 回答
0

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

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

因此,最好的方法是对每个 HTTP 请求使用 ObjectContext。创建一个RepositoryBase类,每个存储库都在RepositoryBase定义通用 CRUD 操作(最好是通用的)中扩展,并仅null在请求时创建一个新实例。

于 2012-04-14T10:00:48.040 回答