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

Can GraphDiff be used for partial updates of simple entities too?

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

我正在尝试找到处理实体更新的解决方案。因为我没有使用 OData,所以我不能使用 Delta,我也不想使用 JsonPatch。

在我的场景中:

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

我的问题在于 3。

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

在上述场景中:

  1. 如上
  2. 服务器从 dto 映射到模型并将模型传递给 service/repository
  3. Graphdiff 将在更新前加载模型,并相应地处理更改的属性
  4. Graphdiff 将 return 更新的实体

至于(3):

GraphDiff 不做每个 属性 补丁。它通过遍历并构建差异来更新整个对象,然后合并更改。由于加载的图形由 EF 跟踪,因此 EF 的任务是发送正确的 SQL 语句。