我在.NET 3.5应用程序中使用EF v1和Velocity缓存。我的缓存对象是数据库中实体模型的表示。所以我决定将EF v1与POCO适配器一起使用。因此,有一个实体访问层从缓存中读取对象,如果不存在,则从数据库中读取它并立即缓存它。现在在需要更新的用例中,需要在数据库中更新脏POCO。现在我不能直接在这里使用POCO适配器和代理,因为它们需要跟踪变化的后备对象。我从来没有从框架中补充适配器对象,因此不会发生更改检测。我看到的最简单的选择是:
我希望我在问题陈述中很清楚。请建议。
答案 0 :(得分:0)
实际上结果是1.和2.是相同的。您需要完全读取实体(以及关联)以确保将分离对象中的更改转换为实体上下文。这种方法的警告是: 1.更新前阅读 2.陈旧写道(因为分离对象的所有属性都得到更新,我们最终可能会更新staler值,因为我们没有真正改变的东西)
我认为没有办法避免1.但是如果2.对您的业务需求至关重要(意味着您无法用过时值覆盖,请跟踪您正在更改的字段“IsChangedProperty”并仅更新那些这是非常痛苦的,但不幸的是,对于分离的物体,EF v4和v1都没有给你任何喘息的机会:(