我在谈论asp.net mvc 所以基本上dbcontext的一个实例被初始化,将数据放入视图然后它被处理掉。
如果"条目"它如何跟踪对实体所做的更改?其中包含原始值和现值,以便...处理好。
答案 0 :(得分:1)
嗯,事实并非如此。
假设您从数据库中获取一个实体以获取编辑视图。然后从实体生成编辑视图。现在处理上下文,因为它不再需要了。我们拥有创建视图所需的所有数据。上下文不跟踪您在视图中所做的任何更改,当您考虑它时,它怎么可能呢?
现在您发布编辑视图。上下文不知道模型已被更改。在编辑操作方法上,您将已发布的实体标记为 dirty db.Entry(entity).State = EntityState.Modified
但实际上没有做任何事情,但是当您调用db.SaveChanges
时,所有脏实体都会更新,添加或删除。在此之后,上下文再次处理。
重点是EF不会跟踪您的更改,而是您决定更新哪些实体。它更新了实体yes,但它不知道自上次更新以来发生了什么变化(至少我认为是这样,为什么需要跟踪变化?)。