0
什麼是創造每筆交易新DbContext
之間的區別:一對多重`DbContext`?
using (var context = new MyDbContext()) { /* transaction */ }
,並使用一個在整個應用程序
var context = MyDbContext.Singleton;
*/ transaction */
什麼是創造每筆交易新DbContext
之間的區別:一對多重`DbContext`?
using (var context = new MyDbContext()) { /* transaction */ }
,並使用一個在整個應用程序
var context = MyDbContext.Singleton;
*/ transaction */
一(第一)是這樣做的正確方法。
另一種是不正確的做法。
實體框架被設計爲具有短暫的上下文。它不會在運行時進行內存管理或清理,而只是繼續增長並在內存中存在的時間越長。它被設計成在每次使用後處置掉。如果您以第二種方式使用它,則代碼會被破壞。
如果你正在開發一個網絡應用程序,它更糟糕。第二種方法可能會導致數據損壞,因爲上下文在所有用戶之間共享,並且多個用戶同時嘗試攻擊它的狀態會被破壞。
「'實體框架被設計爲具有短暫的上下文,它不會進行內存管理或清理」 - 您能否詳細說明? –
@CalebJares - 不知道有什麼要詳細說明的。它不會在運行時清除它的內存。它的緩存增長直到你用完內存。它被設計成在每次使用後處置掉。 –