【问题标题】:What does "Entity Tracked by Context" mean in Entity Framework实体框架中的“上下文跟踪的实体”是什么意思
【发布时间】:2011-09-20 18:50:13
【问题描述】:

我正在阅读这个 E.F. 团队博客的这个系列 http://blogs.msdn.com/b/adonet/archive/2011/01/27/using-dbcontext-in-ef-feature-ctp5-part-1-introduction-and-model.aspx

我在很多地方都看到了“实体跟踪上下文”这个术语,特别是在这部分http://blogs.msdn.com/b/adonet/archive/2011/01/29/using-dbcontext-in-ef-feature-ctp5-part-4-add-attach-and-entity-states.aspx(第 4 部分)

我的问题是

  1. “根据上下文跟踪的实体”是什么意思??

  2. 是否为每个请求使用相同的上下文或为每个请求创建新的上下文(我使用 E.F. for Asp.Net MVC APP)

  3. 跟踪每个实体(已加载)必须在服务器上增加一些内存开销,是吗??

【问题讨论】:

    标签: entity-framework entity-framework-4


    【解决方案1】:

    “由上下文跟踪的实体”意味着上下文知道实体,它知道实体的状态和对实体所做的更改。上下文只能与被跟踪实体一起使用。如果您调用 save changes,则只有跟踪实体上的更改才会持久保存到数据库中。 Tracked 和 Attached 可以视为同义词。

    在 EF 中,我们通常谈论附加实体和分离实体。附加实体由上下文跟踪。如果您从数据库加载实体(除非您手动让 EF 不跟踪实体),或者如果您为实体调用 AttachAdd (DbContext API) / AddObject (ObjectContext API),实体将被附加。您可以通过调用 Detach (ObjectContext API) 或将状态设置为 Detached (DbContext API) 来强制实体从上下文中分离。如果您只是在代码中像任何其他类一样创建实体,则在您为其调用 Attach 之前,它被视为分离的。

    New context is always created for each request - Web 应用程序与分离的实体一起工作很多。这也将解决内存问题。如果您分离要以某种状态(如会话)存储的所有实体,并且如果您在每个请求中正确处理上下文,您将释放内存。

    【讨论】:

    • 我如何知道我的对象是否被跟踪(附加)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多