0

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

在持久化更改时,我想我可以再次从数据库中检索图形,然后从客户端层遍历该图形和图形,寻找差异:-

  • 如果实体存在于数据库图中但不存在于客户端图中,则会执行删除操作。大概我可以.Remove()从数据库图中获取这些。
  • 新实体是客户端图中 ID 为 0 的实体。大概我可以将.Add()这些实体添加到数据库图中。
  • 我不确定处理更新的最佳方式。我不想在我的实体上实现“IsDirty”标志,并且更喜欢更自动化的解决方案。所以a)有没有办法将客户端图中的实体与其数据库对应物进行比较,以查看它是否已更改,以及b)将客户端实体应用/合并到其数据库对应物的最佳方法是什么?

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

我的解决方案是否过于简单?如果可行,我该如何处理上述更新?

4

1 回答 1

0

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

于 2013-04-03T12:51:28.530 回答