GraphDiff也可以用于简单实体的部分更新吗?

时间:2015-01-27 13:55:39

标签: c# entity-framework asp.net-web-api2 graphdiff

我有一个带有EF6 CodeFirst的WebApi2项目。我还使用AutoMapper在我的模型和dto之间进行映射。我没有使用OData。

我试图找到处理实体更新的解决方案。由于我没有使用OData,我无法使用Delta,我不想使用JsonPatch。

在我的场景中:

  1. 客户端将数据(作为dto)发送到服务器
  2. 服务器使用EF
  3. 从数据库加载关联的实体/实体图
  4. 服务器应使用dto
  5. 的值修补实体
  6. 服务器保存已修补的实体,EF应负责更改跟踪
  7. 我的问题在于3.

    我可以使用GraphDiff修补实体吗? (我也将使用GraphDiff更新复杂的图形)。如果我可以使用GraphDiff,EF会自动更改跟踪启动吗?

1 个答案:

答案 0 :(得分:2)

在上述场景中:

  1. 如上所述
  2. 服务器从dto映射到model并将模型传递给service / repository
  3. Graphdiff将在更新前加载模型,并相应地处理更改的属性
  4. Graphdiff将返回更新后的实体
  5. 至于(3):

    GraphDiff不会执行每个属性的修补程序。它通过遍历它并构建diff来更新整个对象,然后合并更改。当EF跟踪加载的图形时,EF的任务就是发送正确的SQL语句。

相关问题