我试图加快一些Web服务调用,并怀疑打开许多NHibernate连接是个问题。我知道打开一个新的SQL服务器连接是非常耗时和昂贵的。但我认为NHibernate会保留一个连接(因此只需要打开一次),即使我在很多地方打开了一个nhibernate会话。
所以这是这个问题的几个不同部分:
using (var session = new SessionFactory.OpenSession()) {... }; using (var session2 = new SessionFactory.OpenSession()) {.. };
using (var session = new SessionFactory.OpenSession()) { using (var session2 = new SessionFactory.OpenSession()) {.. }; };
我知道在大多数情况下最好只使用一个会话,但是编写了一个非常大的程序,其中有许多新会话都在打开,我正在试图弄清楚是否真的可以节省很多性能。 - 写这个或不。
谢谢!
答案 0 :(得分:1)
如果在会话中打开会话,NHibernate很可能无法正常工作。连接通常是池化的,一旦不使用它就会返回池中。如果池没有任何可用连接,则会创建新连接。我建议查看查询优化和缓存。连接不会加快速度。