2017-08-12 69 views
1

我在我的應用程序中使用的是代碼優先的實體框架。但是,我正在爲我的實體工作很多。實際上,應用程序的所有用法都是不斷添加,更新和刪除實體。在所有的教程和問題,上下文中使用這樣的:經常使用的實體框架數據庫上下文

using (var ctx = new MyDBEntities()) 
{ 
    //Operations 
} 

它還說,你不應該創建開始一個上下文和所有的應用程序的生命週期中使用同一個。雖然我知道在操作後關閉連接非常重要,但我認爲不斷創建新環境只是更新一行然後離開它並不是一個上帝的解決方案。我經常訪問我的數據庫(也讀取)增加時間和內存(GarbageCollector不會立即刪除它們)的消耗。

因此,我想問你的意見。我該怎麼做才能使它更有效率?

+0

雖然它不會有太大的區別。實體框架不適用於大量數據的快速使用。相反,我建議你使用'巧妙的' – Valkyrie

+0

*新的上下文只是爲了更新一行*否,但要提交一個工作單元:是的。 –

+0

@GertArnold,你究竟指什麼單位?我需要通常更新單個事物。 – Niko

回答

1

TL; DR:這取決於。

我不擔心重複連接打開和關閉,連接池將抵消任何問題。我認爲,有些意見中有些意見是關鍵的,如果你有一塊工作要做,一些插入,一些更新等,所有相關的,我會在一個上下文中完成。如果完全不相關,每個事件處理程序都應該有它自己的上下文。

EF可以是一個相當不錯的表演者,我不會用它來加載太字節的數據,但對於中等音量來說它沒問題。確保你的數據庫模式支持你的查找,並有適當的索引,這可能比你在應用程序中做的任何事情都要長。使用profiler監控sql server,確保你使用的是合理的表格大小,並查看最長的時間,重點放在那裏。