我正在使用 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/