如果我运行下面的代码,很多到数据库的连接仍然没有任何作用。您可以通过运行检查开连接数:Codefluent:在线程结束后数据库连接仍然存在
SELECT COUNT(dbid) as TotalConnections FROM sys.sysprocesses WHERE dbid > 0
或者,如果你想了解更多详细运行以下命令。你会看到很多连接用“命令等待”状态:
sp_who2
我都会以为,后退出线程,并关闭了连接Codefluent持久性方面也就不复存在了。我如何强制Codefluent关闭池中的连接?
public void TestThreads()
{
for (var i = 0; i < 1000; i++)
{
var t = new Thread(() => StaticticThreadContainer.Test());
t.Start();
}
}
public static int Test()
{
var p = CwObject.LoadByEntityKey("baf04c09-7415-497d-b3cd-00004266f503");
return 1;
}
我发现了一点。如果我在线程返回之前调用以下代码,则连接将正确关闭。这是要走的路吗?
CodeFluentContext.Get(Compareware.Constants.ApplicationStoreName).Persistence.ResetConnection();
可能这是由于某种形式的连接池? –
我这么认为,Codefluent每个线程使用一个连接。但是,如果线程不见了,为什么连接仍然存在? –
请注意,我不熟悉CodeFluent。但数据库连接池通常会尝试通过保持非活动连接并重用它们来避免创建和打开数据库连接的相对昂贵的(时间)过程。 –