【问题标题】:One vs Multiple `DbContext`?一个 vs 多个“DbContext”?
【发布时间】:2013-01-09 21:14:30
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: entity-framework-5


    【解决方案1】:

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

    另一个是不正确的做法。

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

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

    【讨论】:

    • "Entity Framework is designed to have short lived contexts. It does not memory management or cleanup" - 你能详细说明一下吗?
    • @CalebJares - 不知道有什么要详细说明的。它不会在运行时清理它的内存。它的缓存会增长,直到内存不足。它旨在在每次使用后丢弃。
    猜你喜欢
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    相关资源
    最近更新 更多