如果我運行下面的代碼,很多到數據庫的連接仍然沒有任何作用。您可以通過運行檢查開連接數: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。但數據庫連接池通常會嘗試通過保持非活動連接並重用它們來避免創建和打開數據庫連接的相對昂貴的(時間)過程。 –