我的存储库中出现了一系列非常奇怪的错误。未找到或更改行,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/