2

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

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

在我的场景中:

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

我的问题在于3。

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

4

1 回答 1

2

在上述场景中:

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

至于(3):

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

于 2015-05-04T17:32:37.623 回答