带有 Ninject 的 NHibernate 会话管理
Posted
技术标签:
【中文标题】带有 Ninject 的 NHibernate 会话管理【英文标题】:NHibernate Session Management w/ Ninject 【发布时间】:2010-08-27 16:19:00 【问题描述】:这真的是我必须做的所有事情来使用 Ninject 实现每个请求的会话吗?
public class WebModule : NinjectModule
public override void Load()
Bind<ISession>().ToMethod(x => MvcApplication.SessionFactory.OpenSession()).InRequestScope();
全球.asax:
public class MvcApplication : NinjectHttpApplication
public static ISessionFactory SessionFactory = CreateSessionFactory();
public static void RegisterRoutes(RouteCollection routes) /* Routing Stuff */
protected override void OnApplicationStarted()
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
protected override void OnApplicationStopped()
SessionFactory.Dispose();
protected static ISessionFactory CreateSessionFactory() /* session factory stuff */
protected override IKernel CreateKernel()
return new StandardKernel(new WebModule());
这有什么问题吗?这似乎太容易了。
【问题讨论】:
【参考方案1】:阅读this post 后,我决定不这样做。除非有人说出来,否则我会这样做the old fashioned way。
【讨论】:
引用的帖子已经过时了(当时也是:D)。见github.com/ninject/Ninject.Web.Common/wiki/InRequestScope 说了这么多,手动明确地处理ISession
s 并不丢人,这取决于你在做什么——提交和管理你的工作单元绝对是有意识的事情。以上是关于带有 Ninject 的 NHibernate 会话管理的主要内容,如果未能解决你的问题,请参考以下文章
带有 NullReferenceException 的 Xamarin 跨平台中的 Ninject 实现
在使用fluent-nhibernate配置nhibernate时,为什么会出现MissingMethodException?
使用 NHibernate 作为带有输入参数的命名查询调用存储过程