3

私は、リポジトリ パターン、集約ルート、および作業単位のラインでアプリケーションを設計しています。ORM として Entity Framework5 を使用しています。

集約ルートであり、集約ルートではないエンティティとの外部キー関係を持つ新しいエンティティを追加する方法がわからない状況にあります。

前の発言が理にかなっていたかどうかはわかりませんが、ここに例を挙げてみましょう。

Db の Person テーブル (これは私のアプリケーションの集約ルートです)

  1. 名前
  2. 住所1
  3. 国ID

国テーブル (個別にクエリを実行する必要がないため、これは集約ルートではありません)

  1. 国ID
  2. 国の名前

私のアプリケーションには、T が集約ルートである汎用リポジトリを実装する PersonsRepository があります。

コードで新しい人を作成するとき、Person オブジェクトの Navigation プロパティに Country を追加する必要があります。新しい Country オブジェクトを作成してそれを Person の Country プロパティに割り当て、Person オブジェクトを保存しようとすると、EF がエラーをスローします。集計ルートではないため、Countries テーブルをクエリできません。

まあ、これは私の実際のシナリオではありませんが、これは私が克服しようとしているものです. ここからどう進めばいいですか?

私の頭に浮かぶ考えの 1 つは、DB のクエリに使用され、それを変更しない汎用の読み取り専用リポジトリを作成することです。

返信と長い投稿を読んでいただきありがとうございます。

4

1 に答える 1

4

集約ルートは、直接クエリする必要がないものだけではありません。あなたの推論では、国が存在するかどうかを確認するためにクエリを実行できないため、同じ国を複数回作成する必要があります (つまり、国は Person の存在を必要とする弱いテーブルです)。

簡単に言えば、集約ルートは、他に何もなくても識別できるオブジェクトです。国は人がいなくても存在する可能性がありますが、注文明細行は注文なしでは識別できません。この記事を読むことをお勧めします: http://dddcommunity.org/library/vernon_2011

エンティティ フレームワークについては、repository/uow の私の実装を確認してください: http://blog.gauffin.org/2013/01/repository-pattern-done-right/

于 2013-02-12T09:36:50.470 に答える