asp.net-mvc - NHibernate,依赖注入(inject)。正确关闭ISession

标签 asp.net-mvc nhibernate ninject

我正在使用 Ninject、NHibernate、ASP.NET MVC3 和存储库模式。 Ninject 中的模块绑定(bind)如下。

Bind<ISessionFactory>().ToProvider(new SessionFactoryProvider()).InSingletonScope();
Bind<ISession>().ToMethod(context => context.Kernel.Get<ISessionFactory>().OpenSession()).InRequestScope();

问题是存储库应该采用 ISession 还是 ISessionFactory。如果它需要一个 ISessionFactory,那么在存储库中我可以在必要时打开一个 session 并在使用后关闭它。如果需要 ISession,存储库会直接使用它。但我想知道 session 是否正确关闭。

最佳答案

我通常在请求开始时打开一个新 session 和事务,并在最后提交/关闭它。

看看这个post on nhibernate.info 。这篇文章超出了您的需求,我认为它会对您有很大帮助。仔细看看他写的自定义HttpModule。这只是一个例子,你可以在Google上搜索并找到很多类似的实现。

关于asp.net-mvc - NHibernate,依赖注入(inject)。正确关闭ISession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5221620/

相关文章:

javascript - 保存对 angularjs 中对象的响应

c# - NHibernate 缓存问题

jquery - 我如何知道要在客户端代码中放入哪些内容,以及要在 ASP.NET MVC 服务器端中放入哪些内容?

asp.net-mvc - AJAX 发布后 View 不刷新

ASP.net MVC4 WebAPI JSON 中等信任

dependencies - Ninject/DI 在简单场景中有用吗?

asp.net-mvc - ASP MVC 2 注入(inject)

c# - 将未映射的类与 NHibernate 命名查询一起使用

sql - 如何计算 NHibernate 中属于多个标签的所有帖子?

.net - Ninject:如何根据依赖链设置绑定(bind)