2

EF6 CodeFirst を使用した WebApi2 プロジェクトがあります。また、モデルと dto の間のマッピングに AutoMapper を使用しています。私は OData を使用していません。

エンティティの更新を処理するソリューションを見つけようとしています。私は OData を使用していないので、Delta を使用できず、JsonPatch を使用したくありません。

私のシナリオでは:

  1. クライアントはデータを (dto として) サーバーに送信します
  2. サーバーは、EF を使用して DB から関連付けられたエンティティ/エンティティ グラフを読み込みます
  3. サーバーは、エンティティに dto の値をパッチする必要があります
  4. サーバーはパッチを適用したエンティティを保存し、EF は変更の追跡を処理する必要があります

私の問題は3にあります。

エンティティのパッチ適用に GraphDiff を使用できますか? (複雑なグラフを更新していた GraphDiff も使用します)。また、GraphDiff を使用できる場合、EF の変更追跡は自動的に開始されますか?

4

1 に答える 1

2

上記のシナリオでは:

  1. 上記のように
  2. サーバーは dto からモデルにマップし、モデルをサービス/リポジトリに渡します
  3. Graphdiff は更新前にモデルをロードし、それに応じて変更されたプロパティを処理します。
  4. Graphdiff は更新されたエンティティを返します

(3)に関しては:

GraphDiff は、プロパティごとのパッチを行いません。オブジェクト全体をトラバースして更新し、差分を作成してから、変更をマージします。読み込まれたグラフは EF によって追跡されるため、正しい SQL ステートメントを送信するのは EF のタスクです。

于 2015-05-04T17:32:37.623 に答える