实体框架 - 持久化POCO实体图

时间:2013-04-03 11:30:40

标签: entity-framework

在我的应用程序中,我需要检索实体的大图,在分离时进行各种更改 (添加实体,进行更改,删除实体),然后将图表保留回数据库。我尝试过STE,但它开始使我的客户端层的某些方面过于复杂化,所以我希望通过使用POCO来保持简单(至少在客户端)。

当谈到持久化更改时,我想我可以再次从数据库中检索图形,并从客户端层走这个图形和图形,寻找差异: -

  • 如果实体存在于数据库图形中而不是客户端图形中,则执行删除操作。据推测,我只能从数据库图中.Remove()这些。
  • 新实体是客户端图中ID为0的实体。据推测,我只能.Add()这些数据库图。
  • 我不确定处理更新的最佳方式。我不想实施一个" IsDirty"在我的实体上标记,并且更喜欢更自动的解决方案。那么a)有没有办法比较客户图中的实体与其数据库对应物,看它是否已经改变,以及b)将客户实体应用/合并到其数据库对应物的最佳方式是什么? / LI>

完成所有这些后,我可能只是在数据库图上调用SaveChanges()。我还必须将此图表传递回客户端,以确保它具有最新版本(数据库生成的值,如ID,时间戳)。

我的解决方案太简单了吗?如果可行,我该如何处理上述更新?

1 个答案:

答案 0 :(得分:0)

您的解决方案可以正常工作,但实现起来并不简单 - 特别是如果您尝试以某种方式进行通用(检查this question中的答案 - 有人提供了应该已经实现的代码库)。它还会给数据库带来大量额外的流量,所以当你期望一些重负载时,这绝对不是一个好方法。最简单的解决方案是@Gert Arnold提到的。