我在ASP.net應用程序中首次使用實體框架4。 我想確保DB連接離開using語句後卻關門,在SQL Server 2005中探查,我無法看到連接註銷離開使用,只在登錄時輸入時,實體框架4不關閉sql server 2005 profiler中的連接
例如我開始一個空白頁面asp.net,並在Page_Load,我試着用這個簡單的代碼(是絕對沒有別的頁面):
using (var model = new DB("name=DB"))
{
var livre = (from l in model.books
select l).SingleOrDefault();
}
在探查,我看到了審覈登錄,但而不是離開「使用」後的註銷。 所以,我試圖關閉連接明確,使用以下clode:
using (var model = new DB("name=DB"))
{
var livre = (from l in model.books
select l).SingleOrDefault();
model.Connection.Close();
}
我再次看到登錄,但沒有註銷。奇怪的是,當我在關閉之後檢查model.Connection中的ConnectionState屬性時,它指示'Closed',但不在Sql Server中。
要查看SQL Server中的實際註銷,我必須在VS2010中按停止調試按鈕,並且當我重新啓動Web應用程序時,只有這樣我才能看到註銷(以下是我的頁面處理時的實際登錄) 。
我開始懷疑SQL Server中是否有某些東西可以保持連接打開,即使在代碼中關閉了連接。
有什麼想法?
感謝
這是一個預期的行爲閱讀關於[連接重用/池](http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx) – 2012-02-02 15:17:47
將:Pooling = false添加到sql連接字符串,但注意性能影響。 – Tomek 2012-02-02 15:23:36
我懷疑你在工作中看到[連接池](http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx)。池維護連接的地方,以便它可以迅速重用於下一個請求。 – EBarr 2012-02-02 15:18:01