2010-05-18 40 views
2

使用StructureMap为非Web应用程序(如Windows服务)注入和管理NHibernate的会话/事务的最佳实践是什么?NHibernate与非Web应用程序的StructureMap

在web环境里,我们使用使用StructureMap的混合生命周期PerRequest会话管理的生命周期,但对于一个Windows服务,我不能处理的IDisposable的UnitOfWork ...

感谢。

+1

您的Windows服务如何工作?它是否轮询并在计时器事件中运行代码?你是否创建了一个新线程来处理工作? – 2010-05-18 12:56:56

+0

Windows服务托管一些WCF服务,并处理一些定时后台任务 – 2010-05-19 08:27:47

回答

2

Ayende给出了一个很好的总结如何在桌面应用程序中处理NHibernate here

使用StructureMap,我首先手动创建ISessionFactory。然后声明实例要在所有ISessionFactory实例使用:

 For<ISessionFactory>().Use(sessionFactory); 

因此,你离开屏幕自己创造和他们的会话处理。所有会话都相互隔离以避免内存问题,这一点很重要。这在文章中有详细解释。

使用这种方法,并根据需要使用IStatelessSession,我减少了我在WPF/StructureMap/NHibernate应用程序中遇到的很多问题。