dependency-injection - Ninject 缓存注入(inject)的 DataContext?生命周期管理?

标签 dependency-injection datacontext ninject lifecycle

我的存储库中出现了一系列非常奇怪的错误。未找到或更改行,2 次更新中有 1 次失败......没有任何意义。

就好像我的 DataContext 实例被缓存了......没有任何意义,我正在考虑转行。

然后我注意到 DataContext 实例是使用依赖注入(inject)和 Ninject 传入的(这是我第一次使用 DI ...)。我撕掉了依赖注入(inject),一切都恢复了正常。即刻。

所以依赖注入(inject)是问题所在,但我仍然不知道为什么。我推测 Ninject 正在缓存注入(inject)的 DataContext。

它是否正确?

编辑:

Ninject 绑定(bind)如下:

Bind<IPupilBlockService>().To<SqlPupilBlockService>()
   .WithConstructorArgument("db", new dbDataContext());

最佳答案

@Steven 给出了很好的解释,但实际上,Ninject 已经为您提供了一种方法来指定为每个请求生成一个实例:InRequestScope .

Bind<IPupilBlockService>()
   .To<SqlPupilBlockService>()
   .InRequestScope()
   .WithConstructorArgument("db", new dbDataContext());

关于dependency-injection - Ninject 缓存注入(inject)的 DataContext?生命周期管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4517006/

相关文章:

java - 当类可以通过黑盒测试进行测试时,我应该避免使用 Di 吗?

c# - 绑定(bind)工作正常,但智能感知显示 : Cannot resolve property XXX in data context of type 'object'

wpf - 从另一个 ViewModel 类将 View 绑定(bind)到 DataContext

c# - Ninject 和异步操作

.net - 不支持具有 null 或空名称的模块。忍者

ioc-container - 在 Ninject 2.0 中,我如何同时拥有通用绑定(bind)和特定情况的绑定(bind)?

c# - 装饰 ASP.NET Web API IHttpController

java - 使用 Dagger 注入(inject)通配符类型

java - 使用手动依赖注入(inject)构建多级对象树

c# - MVC 4 后期绑定(bind) DataContext 实体 LINQ 引用