如何在Timer中使用NHibernate CurrentSessionContext

时间:2009-10-29 11:57:53

标签: .net nhibernate session

我构建了一个使用ISessionFactory.GetCurrentSession()的存储库类来查找其方法应该使用的当前会话,并使用CurrentSessionContext.Bind绑定我的应用程序中的会话。在NHibernate配置中,我使用thread_static作为我的current_session_context_class

到目前为止,这种方法完美无缺。在每个线程上,我创建了一个将由存储库实例使用的新会话。

但是当我使用System.Threading.Timer时,将在ThreadPool中的任何线程上调用回调。这样我就不能将会话绑定到一个回调的执行之外,因为下一个回调可以在不同的线程上执行。

如果在回调的两次或多次执行中应该使用一个会话,那么如何在CurrentSessionContext内处理会话(有或没有System.Threading.Timer)?

1 个答案:

答案 0 :(得分:0)

会话应与工作单元相关联。听起来你只需要在每次回拨时都需要一个新的会话。会话的重量非常轻。