正确使用nhibernate会话

时间:2009-11-23 19:21:07

标签: c# nhibernate

我有一个客户端服务器应用程序,服务器使用nhibernate。 我想知道如何使用会话? 每次通话? 每个客户? 单?

其他方式?

如何将会话缓存保留在服务器中? 而且我还想知道会话是否是线程安全的?

5 个答案:

答案 0 :(得分:7)

每单位工作应使用一个会话。如果这包括多个操作,那就这样吧。

使用session.BeginTransaction()来包装工作单元并在完成所有项目后提交。

会话不是线程安全的,但会话工厂是(你肯定想要保留)。

NHiberate有各种各样的数据缓存选项,但这些会话都是用来处理的。

答案 1 :(得分:3)

通常每个请求都会完成一个。您可以创建HttpApplication,它在请求开始时打开会话,并在请求结束时关闭(example)。

答案 2 :(得分:1)

每次通话应该是通常的解决方案

答案 3 :(得分:1)

会话生命周期问题确实没有一个正确的答案。您可以使任何会话生命周期工作,这取决于您的要求。会话不是线程安全的,但会话工厂是。

要保持缓存,您需要保持会话。除了简单的单用户单进程应用程序之外,保持缓存并使缓存保持正确可能相当具有挑战性。

答案 4 :(得分:1)

我从NHibernate Best Practices使用了一个很好的例子。

代码示例使用每个ASP.NET请求的会话。