2009-12-18 178 views
1

我正在調試Jaroslaw Kowalski提供程序包裝。在調試它時,我發現實體框架在每次查詢後關閉連接。與數據庫中的每個交互,應用程序的生命週期中,一個數據庫連接打開,並執行查詢後連接被關閉實體框架和數據庫連接

我的問題是:

  • 無論底層提供默認做連接池。
  • 如果我提供我自己的池,那麼我將如何知道何時關閉連接。目前我正在使用Thread.GetDomain()。ProcessExit事件註冊並在事件觸發時關閉連接。這種方法好嗎?

困擾我的事情是Entity Framework本身正在關閉連接。所以,我有點猶豫是否需要集中連接,或者在特殊情況下可能會導致問題。

回答

4

僅供參考:

EF只關閉它打開的連接。

所以,如果你這樣做手工的:

((ctx.Connection as EntityConnection).StoreConnection as SqlConnection).Open(); 

subsequents查詢和SaveChanges()不應該關閉連接。

希望這有助於

亞歷

2

默認connectionpool = 1連接。所以不要擔心。

這裏的整個想法是,我們有1編程模型(斷開連接),配置&調整是外部的。

0

在.NET 4中,引用:Managing Connections and Transactions

應注意以下事項管理時連接:

對象上下文將打開連接如果在手術之前尚未開放。如果對象上下文在操作過程中打開連接,那麼在操作完成時它將始終關閉連接。

如果手動打開連接,對象上下文將不會關閉它。調用Close或Dispose將關閉連接。

如果對象上下文創建連接,則在處理上下文時連接將始終處置。

在長時間運行的對象上下文中,必須確保上下文在不再需要時處理。

如果您爲對象上下文提供了一個打開的EntityConnection,則必須確保它已被丟棄。