0

DbContext为每个事务创建一个新的有什么区别:

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

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

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

1 回答 1

2

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

另一个是不正确的方法。

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

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

于 2013-01-09T21:18:15.167 回答