一对多个`DbContext`?

时间:2013-01-09 21:14:31

标签: entity-framework-5

为每笔交易创建新的DbContext之间的区别是什么:

using (var context = new MyDbContext()) { /* transaction */ }

并在整个应用程序中使用一个

var context = MyDbContext.Singleton;
*/ transaction */

1 个答案:

答案 0 :(得分:2)

一个(第一个)是正确的方法。

另一种是不正确的做法。

实体框架旨在拥有短暂的上下文。它在运行时没有内存管理或清理,只是继续增长并使用内存的时间越长。它设计用于每次使用后进行处理。如果您以第二种方式使用它,您的代码就会被破坏。

如果你正在开发一个网络应用程序,那就更糟了。第二种方法可能导致数据损坏,因为上下文在所有用户之间共享,并且多个用户试图同时敲击状态会破坏状态。