2013-12-21 89 views
2

使用的DbContext後開放。但它沒有發生。即使在ctx.Dispose()之後。連接保持淨

我可以關閉所有打開的連接的唯一方法是clearAllPools方法。 我做錯了什麼? 謝謝。

+9

聯合連接不會在物理上關閉,它們會重置。這是連接池的正常操作,如果你做的都正確,不應該影響你。 – GSerg

+0

您是否在您的類TestDatabaseEntitites中實現了Dispose,並在處理期間或使用sql連接之後關閉連接? – Jade

+0

@Jade,他使用'using ...'代碼的事實實現了Dispose。 '使用'是'IDisposable'。 – Tico

回答

1

.Net中的連接池連接通過設計保留在幕後。這是因爲打開與數據庫的連接通常是一個非常昂貴的操作,需要幾秒鐘的時間。

由於這個原因,關閉一個連接只會重置它,以便未來Open只會傳遞舊的重置連接而不是打開一個新連接。

0

該回答是從here

稱爲的DbContext是非常輕量的目的。

無論您的DbContext是否保持活動狀態,或者在進行調用之前將其實例化都沒關係,因爲實際的數據庫連接僅在SubmitChanges或Enumerate查詢時打開(在這種情況下,它在枚舉結束時關閉)。

在你的具體情況。根本不重要。