【发布时间】:2011-03-09 08:45:09
【问题描述】:
我正在使用带有 Ninject 和 NHibernate 的 ASP.NET MVC 3。
在考虑 DI 时,我认为获得资源的人也要确保关闭它(在这种情况下,Ninject 应该负责)
但我不确定 Ninject 在使用 InRequestScope 时是如何工作的。
我的代码是:
Bind<ISession>().ToMethod(context => context.Kernel.Get<ISessionFactory>().OpenSession()).InRequestScope();
我打开一个会话并将其放入 I InRequestScope,但是当 ISession 超出请求范围时,Ninject 是否会关闭我的 ISession?
【问题讨论】:
-
您能否解释一下这与 stackoverflow.com/questions/5221620/… 有何不同和/或考虑关闭它 - 这个问题有很多重复,这就是为什么他们都没有一个正确的答案 IMO?
-
你提到的问题有两个矛盾的答案,其实我在这里得到了很好的答案,但现在它被删除了?也许是你?
-
@Lutica:问题是至少还有 2 个半问题+答案。 @Darin 删除了他,因为维护者之一(@Remo Gloor)指出他的回答有缺陷。 @Darin 可能应该留下它并在撤稿中进行编辑,因为他误解了某些东西这一事实对你们中的任何人来说都是一种学习经历。如果我能够删除帖子,我当然不会 - 如果没有得到任何结果,我会评论答案以修复它或发布改进版本
-
@Lutica:我在这里坚持的原因是没有像样的答案、问题或博客文章关于在 MVC3 中正确使用 Ninject 和 NHibernate,人们只能被提及,以及每个新问题半生不熟的答案只会让问题变得更糟,而不是更好。如果有人能找出最好的问题,我会悬赏它......
-
BTW S#arpArchitecture 通常被建议作为在该领域寻找最佳实践的地方,但您通过查看其他答案就知道了!
标签: nhibernate asp.net-mvc-3 dependency-injection ninject