0

什么是更好的?或者也许 - 以下是一个好习惯吗?我使用 Spring.net 创建 DbContext 的实例,然后将其注入每个控制器以用于操作。该对象是一个单例。有时我会收到一个异常,说“ObjectContext 实例已被释放..”我怀疑这可能是原因,但是这是不可重复的,到目前为止,我的应用程序仅在开发过程中被我使用。

现在,在每个控制器类中创建一个 DbContext 并在其操作中重用会更好吗?或者可能在每个动作本身中创建 DbContext 对象;或者只是在 Spring 配置中将其设置为不是单例,因此每次访问时都会创建它?

4

1 回答 1

1

最好使用请求范围注入您的 dbcontext。这样,上下文在请求开始时创建并在结束时处理。在请求期间,您将有一个可用的数据库上下文,以便它可以为您处理延迟加载的对象。

当您注册为单例时,所有请求都共享 dbcontext,这在大多数情况下不是您想要的。例如,它可能持有对所有加载对象的引用,可能会将整个数据库加载到内存中。

于 2012-01-22T09:56:59.427 回答