我有一个测试控制台应用程序正在执行sql脚本来创建数据库及其表,然后插入数据。我使用DAO来创建,检索,更新和删除表,然后尝试删除数据库,但它不能,因为它说它当前正在使用。我如何终止连接?通过调试和运行sql脚本来查看总连接,我已经将其缩小到这段代码,而这些代码并没有破坏连接。即使它说清除了连接,数据库仍然表示它仍然连接。
foreach (ISessionFactory factory in this.connections.Values)
{
factory.Close();
}
this.connections.Clear();
this.connections = null;
答案 0 :(得分:1)
NHibernate管理所有数据库连接本身。它会根据需要打开和关闭数据库,但您可以尝试调用Session.Disconnect以使其与ADO.NET连接断开连接。
但是......如果您启用了连接池,这通常是“默认”连接行为,则连接将仅返回到连接池,而不是已释放,并且它仍将显示为连接,因此您将必须清除连接池。
不幸的是,我不知道您是否可以通过NHibernate直接执行此操作,但您可以使用SQLConnection对象发出ClearPool或ClearAllPools调用...