我有一個處理所有數據庫操作的類。我已經讀過,最好將多個DataContext實例用於不同的讀/寫/更新/刪除操作,而不是一個長時間存在的DataContext實例。在每個函數中使用DataContext
這意味着每一個,它的讀/寫/更新功能/刪除數據庫需要做到這一點:
public int GetSomeID(string name)
{
using (XXDataContext context = new XXDataContext(connStr))
{
...
}
}
public int GetAnotherID(string name)
{
using (XXDataContext context = new XXDataContext(connStr))
{
...
}
}
public void WriteSomething(string text)
{
using (XXDataContext context = new XXDataContext(connStr))
{
...
}
}
而不只是在構造函數中有這個使用()和具有上下文的私有成員變量可用於每個函數調用。
在每個函數調用中都保留創建一個新的DataContext的功能,是否可以在其他地方使用()來移動它,所以不是每個函數都必須包含該行?
你可以在構造函數/析構函數中創建和清除,但這會使得清理工作進一步受到GC的支配。你可以重構這些方法來傳遞一個Func/Action到一個內部方法,該方法在內部使用和評估Func(但這是一個公平的少一點慣用法)。 – 48klocs
如果這是一個Web應用程序,你可以隨時使用我的解決方案 - 每個請求一個數據庫上下文 - http://stackoverflow.com/a/10153406/1289283 – walther
你可以看看使用一些AOP插件。例如:https://github.com/Fody/Usable – Veikedo