【发布时间】:2014-12-18 16:15:24
【问题描述】:
在我的应用程序中,我为每个调用创建一个 dbcontext,并通过 Ninject 将其注入依赖项。
我一直在考虑创建一个单例类(ContextManager - BaseController 将为每个请求设置上下文)以使上下文在任何地方都可用,从而允许所有服务共享相同的上下文。这将进一步简化,例如,禁用代理创建等,因为上下文仅从一个地方进行管理。
但是,由于该对象是一个单例对象,因此每个请求都会覆盖上下文,这对我不起作用(我不希望多个请求共享一个上下文)。
最好的方法是什么(如何最好只在请求范围内使用单个上下文)?
【问题讨论】:
-
这是 asp.net MVC 吗?
-
@Paddy 是的,但我使用的是 Web API 2。
-
创建单例与使用 Ninject 有何不同/更好? Ninject 可以维护您的上下文的单例实例并传递它或为每个请求创建一个新实例等。
-
另外,既然我们在这个话题上,Ninject 是所有 DI 容器中最慢的。从那以后,我停止使用 Ninject 并使用 SimpleInjector,这是最流行的一种。
-
@TheMuffinMan:这对您的平均响应时间提高了多少?
标签: c# asp.net entity-framework entity-framework-6