使用StructureMap为非Windows应用程序(如Windows服务)注入和管理NHibernate会话/事务的最佳实践是什么?
在Web上下文中,我们使用StructureMap的混合生命周期使用PerRequest会话管理生命周期,但对于Windows服务,我无法处理IDisposable UnitOfWork ......
感谢。
答案 0 :(得分:2)
Ayende对如何在桌面应用程序here中处理NHibernate做了很好的总结。
使用StructureMap,我首先手动创建ISessionFactory。然后声明要在所有ISessionFactory实例上使用的实例:
For<ISessionFactory>().Use(sessionFactory);
因此,您可以离开屏幕本身来创建和处理他们的会话。重要的是所有会话彼此隔离以避免内存问题。本文将对此进行全面解释。
通过这种方法,并且根据需要充分利用了IStatelessSession,我已经减少了我在WPF / StructureMap / NHibernate应用程序中遇到的许多问题。