.net 实体框架v1和缓存的POCO更新

.net 实体框架v1和缓存的POCO更新,.net,entity-framework,appfabric,efpocoadapter,.net,Entity Framework,Appfabric,Efpocoadapter,我在.NET3.5应用程序中使用EFV1和Velocity缓存。我的缓存对象是数据库中实体模型的表示。所以我决定使用EFV1和POCO适配器。所以有一个实体访问层,它从缓存中读取对象,如果不存在,则从数据库中读取对象并立即缓存。现在,在需要更新的用例中,脏POCO需要在数据库中更新。现在我不能在这里直接使用POCO适配器和代理,因为它们需要一个跟踪更改的备份对象。我从未从框架中提取适配器对象,因此不会发生更改检测。我看到的最简单的选择是: 在更新之前读取实体。从POCO设置适配器值。让变化检测顺

我在.NET3.5应用程序中使用EFV1和Velocity缓存。我的缓存对象是数据库中实体模型的表示。所以我决定使用EFV1和POCO适配器。所以有一个实体访问层,它从缓存中读取对象,如果不存在,则从数据库中读取对象并立即缓存。现在,在需要更新的用例中,脏POCO需要在数据库中更新。现在我不能在这里直接使用POCO适配器和代理,因为它们需要一个跟踪更改的备份对象。我从未从框架中提取适配器对象,因此不会发生更改检测。我看到的最简单的选择是:

在更新之前读取实体。从POCO设置适配器值。让变化检测顺其自然。这会在每次更新之前进行选择,考虑到许多相关实体,这可能会带来高昂的成本。 创建一个新的实体对象。从POCO设置实体键和属性。保存更改。即使未更改属性/关联实体,也不会进行不必要的写入。
我希望我在问题陈述中说得很清楚。请建议。

事实上结果是1。二,。都是一样的。您需要完全结合关联来读取实体,以确保将分离对象中的更改转换为实体上下文。这种方法的注意事项是: 1.更新前阅读 2.陈旧写入由于来自分离对象的所有属性都得到更新,我们可能会更新更陈旧的值,因为我们不知道真正更改了什么

我认为没有任何方法可以避免。但是如果2。对于您的业务需求至关重要,这意味着您无法用过时的值覆盖,无法跟踪您正在通过IsChangedProperty更改的字段,只能更新这些字段。这是非常痛苦的,但不幸的是,对于分离的对象,EF v4和v1都不能给您任何喘息的机会: