我有一个客户端服务器应用程序,服务器使用nhibernate。 我想知道如何使用会话? 每次通话? 每个客户? 单?
其他方式?
如何将会话缓存保留在服务器中? 而且我还想知道会话是否是线程安全的?
答案 0 :(得分:7)
每单位工作应使用一个会话。如果这包括多个操作,那就这样吧。
使用session.BeginTransaction()来包装工作单元并在完成所有项目后提交。
会话不是线程安全的,但会话工厂是(你肯定想要保留)。
NHiberate有各种各样的数据缓存选项,但这些会话都是用来处理的。
答案 1 :(得分:3)
通常每个请求都会完成一个。您可以创建HttpApplication,它在请求开始时打开会话,并在请求结束时关闭(example)。
答案 2 :(得分:1)
每次通话应该是通常的解决方案
答案 3 :(得分:1)
会话生命周期问题确实没有一个正确的答案。您可以使任何会话生命周期工作,这取决于您的要求。会话不是线程安全的,但会话工厂是。
要保持缓存,您需要保持会话。除了简单的单用户单进程应用程序之外,保持缓存并使缓存保持正确可能相当具有挑战性。
答案 4 :(得分:1)
我从NHibernate Best Practices使用了一个很好的例子。
代码示例使用每个ASP.NET请求的会话。