跨控制器和操作重用Spring.Net中创建的DbContext对象

时间:2012-01-21 20:19:26

标签: database model-view-controller dbcontext spring.net

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

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

1 个答案:

答案 0 :(得分:1)

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

当您注册为单身人士时,所有请求都会共享dbcontext,而大部分时间都不是您想要的。例如,可能是它保存了对所有已加载对象的引用,可能会将整个db加载到内存中。