我使用ASP.NET MVC,NHibernate和MySQL完成了一个站点。 在我的项目中,我有一些存储库类,每个类都使用如下代码的方法:
using(ISession session = NHibernateHelper.OpenSession()) {
using(ITransaction transaction = session.BeginTransaction()) {
session.Save(cidade);
transaction.Commit();
}
}
我来自Classic ASP,所以如果与MySQL的连接实际上已经关闭,我会很有用。事实上,如果有像Classic ASP那样的连接,我会很有用。
我应该做些什么来明确关闭连接/会话还是“自动关闭”?
如果我的服务器上有很多打开的连接,有办法吗?
非常感谢。
答案 0 :(得分:5)
会话以非常有效的方式进行连接管理,因此您不必手动执行任何操作,只要您不忘记处理会话(就像您一样)。连接在会话的整个生命周期内都不会打开,但仅在需要时才会打开。与连接池中的连接数量相比,数据库的打开连接数不会多,默认情况下为100。在几乎每种情况下,100个连接都不会很多,因此在打开大量连接时,您无需执行任何操作。在一个非常繁忙的网站上,你甚至不会使用所有100个连接,因为webrequests的线程池的大小,它将类似于20-40个开放连接。