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

问题描述 投票:0回答:1

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

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

database model-view-controller dbcontext spring.net
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.