为每笔交易创建新的DbContext
之间的区别是什么:
using (var context = new MyDbContext()) { /* transaction */ }
并在整个应用程序中使用一个
var context = MyDbContext.Singleton;
*/ transaction */
答案 0 :(得分:2)
一个(第一个)是正确的方法。
另一种是不正确的做法。
实体框架旨在拥有短暂的上下文。它在运行时没有内存管理或清理,只是继续增长并使用内存的时间越长。它设计用于每次使用后进行处理。如果您以第二种方式使用它,您的代码就会被破坏。
如果你正在开发一个网络应用程序,那就更糟了。第二种方法可能导致数据损坏,因为上下文在所有用户之间共享,并且多个用户试图同时敲击状态会破坏状态。