dbContext如何跟踪实体的状态

时间:2014-04-04 11:18:34

标签: asp.net-mvc entity-framework

我在谈论asp.net mvc 所以基本上dbcontext的一个实例被初始化,将数据放入视图然后它被处理掉。

如果"条目"它如何跟踪对实体所做的更改?其中包含原始值和现值,以便...处理好。

1 个答案:

答案 0 :(得分:1)

嗯,事实并非如此。

假设您从数据库中获取一个实体以获取编辑视图。然后从实体生成编辑视图。现在处理上下文,因为它不再需要了。我们拥有创建视图所需的所有数据。上下文不跟踪您在视图中所做的任何更改,当您考虑它时,它怎么可能呢?

现在您发布编辑视图。上下文不知道模型已被更改。在编辑操作方法上,您将已发布的实体标记为 dirty db.Entry(entity).State = EntityState.Modified但实际上没有做任何事情,但是当您调用db.SaveChanges时,所有脏实体都会更新,添加或删除。在此之后,上下文再次处理。

重点是EF不会跟踪您的更改,而是您决定更新哪些实体。它更新了实体yes,但它不知道自上次更新以来发生了什么变化(至少我认为是这样,为什么需要跟踪变化?)。