2012-12-03 114 views
1

我在我的數據訪問層中使用FluentData ORM for .NET。但是,這個問題可能適用於大多數ORM。FluentData的壽命IDbContext

IDbContext的正確使用壽命是多少?每次執行對數據庫的新查詢時,是否應該實例化新的數據庫上下文?我有兩種情況,這是正確的用法?請注意,我正在查詢MS SQL以及MySQL服務器。所以,我想知道是否對達到最大連接有任何影響。是的,我正在多線程上調用數據庫。兩種情況都是安全的嗎?

場景A:

我的倉庫類實現了IDisposable和持有型IDbContext的私有變量。這個變量在構造函數中被實例化,並在類被丟棄時被處理。存儲庫中只有一個上下文實例。

方案B:

我的倉庫類有一個返回IDbContext的新實例的私有方法。每當另一個方法調用數據庫時,他們就調用這個方法來獲得一個新的數據庫上下文。

回答

1

從官方文檔:


你應該何時處理?如果你已經啓用的UseTransaction或 UseSharedConnection

  • 的DbContext必須處理掉。
  • 如果您啓用了UseMultiResult(或MultiResultSql),則必須處理DbCommand。
  • 如果您啓用了UseMultiResult,則必須處理StoredProcedureBuilder。

在所有其他情況下,處置將由FluentData自動處理。這意味着在執行查詢之前打開數據庫連接,並在執行完成後立即關閉數據庫連接。


http://fluentdata.codeplex.com/documentation#Dispose

希望它可以幫助別人。