0

私はDDD、集約パターン、EF、リポジトリパターン、作業パターンの単位を研究していましたが、ちょっと混乱します。そこで私はここに来て質問をしました。非集約エンティティをDDDの作業ユニットに公開する必要がありますか?

これは例です:学生(主体)、住所、連絡先これら3つのエンティティは集合体を作成します。 DDD/Aggregateのパターンルールの1つは、私がStudentを通してAddressと対話できることです。アドレスを追加/削除/更新することはできません。それは学生を通じて行われなければならない。第2の規則は、学生、住所および連絡先の変更を単一の取引で行う必要があることです。そしてここに私の混乱があります:

私はデータベースにすべてのテーブルのためのリポジトリを持っています。すべてのエンティティにCRUD操作が必要であるためです。しかし、すべてのリポジトリは内部的なものです。 Public(私のData dllから)公開する唯一のクラスはContextとUnitOfWorkです。私はすべてのリポジトリを宣言しました:

質問: 私は集合体の主体のリポジトリだけを持つべきですか?

別の言い方をすれば、 Unit Of WorkではAddress Repositoryが必要ですか?

+0

リポジトリは公開されており、ルート集約のリポジトリのみが必要です。リポジトリは作業ユニットと協力しなければなりません。 – plalx

+0

@plalxだから、どのようにAddressRepositoryなしで人のアドレスをアドレステーブルに挿入することができますか? – Sara

+2

AddressがStudent集合体の一部である場合、それを行うのはStudentRepositoryの責任です。 – plalx

答えて

0

DDDはさまざまな方法で解釈することができますが、各レポが通常GetAll、GetById、Saveメソッドを公開する集約ルートのレポジトリはこれまでしかありません。

あなたがコンテキストとUoWの両方を参照するとき、私はあなたがこれによって何を意味するのか理解していません。各集合体のrepo Save関数を使用してUnit of Workパターンを達成します。 Contextオブジェクトはありません

関連する問題