- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,我为每个调用创建一个 dbcontext,并通过 Ninject 将其注入(inject)依赖项。
我一直在考虑创建一个单例类(ContextManager - BaseController 会在每个请求上设置上下文)以使上下文在任何地方都可用,从而允许所有服务共享相同的上下文。这将使禁用代理创建等变得容易,因为上下文仅从一个地方管理。
但是,由于该对象是一个单例对象,因此每个请求都会覆盖上下文,这对我来说不起作用(我不希望多个请求共享一个上下文)。
执行此操作的最佳方法是什么(如何优选仅在请求范围内使用单个上下文)?
最佳答案
您所描述的不是单例,而是请求作用域对象。 ASP.NET MVC 对依赖注入(inject)有很强的支持,你应该允许你的 DI 绑定(bind)来确定上下文的来源,而不是自己实例化它。 Ninject 有绑定(bind)语法来支持这一点。我认为它是:
Bind<DataContext>().ToSelf().InRequestScope();
只要您始终如一地使用良好的依赖注入(inject)模式,这应该会导致将相同的 DataContext
实例传递给您在同一请求中拥有的每个依赖项。
依赖依赖注入(inject)构建上下文的优势在于,如果您想更改细节,例如禁用对上下文的更改跟踪,您可以简单地更改您的 DI 绑定(bind)以使用自定义方法或工厂,其余的您的代码根本不需要更改。
关于c# - Asp.NET 应用程序中的单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27551038/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!