共用方式為


在物件服務中管理連接 (Entity Framework)

根據預設,物件服務會管理與資料庫的連接。它只會在必要時開啟連接,例如,為了執行查詢或呼叫 SaveChanges。然後物件服務會在此作業完成時關閉連接。

呼叫以下任何一個方法會開啟連接:

物件服務會透過 Connection 屬性公開 EntityConnection。如此可讓您管理連接和交易,或是提供自己的 EntityConnection。當您想要將連接保留在短期的物件內容中,以改善效能或是明確控制交易時,這樣的作法會很實用。實體架構 所使用的相同提供者連接可以與應用程式的其他部分共用。

下列考量適用於管理連接時:

  • 如果在作業開始之前尚未開啟連接,物件內容將會開啟連接。如果物件內容在作業期間開啟連接,它一定會在作業完成時關閉連接。

  • 如果您手動開啟連接,物件內容不會將連接關閉。呼叫 CloseDispose 將會關閉連接。

  • 如果物件內容建立連接,則當處置物件內容時,一定會處置此連接。

  • 在長時間執行的物件內容中,您必須確定當物件內容不再需要時,要將它處置。

  • 如果您為物件內容提供 EntityConnection,您必須確定它已處置。

下列範例示範如何明確開啟連接:

' Explicitly open the connection.
advWorksContext.Connection.Open()
// Explicitly open the connection.    
advWorksContext.Connection.Open();

如需詳細資訊,請參閱 HOW TO:從物件內容手動開啟連接 (Entity Framework)

當您在長時間執行的物件內容中手動開啟連接時,您必須呼叫 Dispose,以確定當不再需要物件內容時會關閉連接。您也可以在 EntityConnection 上呼叫 Close 來明確關閉連接。如需詳細資訊,請參閱 HOW TO:在長時間執行的物件內容中管理連接 (Entity Framework)

物件服務也可讓您建立 EntityConnection,並提供與物件內容的這個連接。在此情況下,您可以手動開啟連接,或是在需要時允許物件內容開啟連接。當您為物件內容提供 EntityConnection 時,您必須確定當物件內容和 EntityConnection 不再需要時會加以處置。下列範例會建立連接,並將它傳遞給物件內容:

' Create an EntityConnection.
Dim conn As New EntityConnection("name=AdventureWorksEntities")

' Create a long-running context with the connection.
Dim advWorksContext As New AdventureWorksEntities(conn)
// Create an EntityConnection.
EntityConnection conn =
    new EntityConnection("name=AdventureWorksEntities");

// Create a long-running context with the connection.
AdventureWorksEntities advWorksContext =
    new AdventureWorksEntities(conn);

如需詳細資訊,請參閱 HOW TO:使用 EntityConnection 搭配物件內容 (Entity Framework)

另請參閱

其他資源

管理物件內容 (Entity Framework)