が見えます。基本的にあなたが学生への質問から永続的な一方向の関係を持って
IList<Question> studentQuestions = questionsRepository.findByStudent(student);
:
StudentDriver student = studentsRepository.findById(id);
Question question = someFactory.CreateForStudent(student);
questionsRepository.Persist(question);
、学生のために、すべての質問を得ることが質問リポジトリの責任になります:新しい質問を追加すると、次のようになります。質問 - 所属 - 学生のドライバー(多対1)。
2)1つの集約ルート。 StudentDriverは、質問のリストを含む集約のルートです。新しい質問を追加すると、次のようになります。
StudentDriver student = studentsRepository.findById(id);
student.addNewQuestion("Should you stop on a red light?", "Yes");
studentsRepository.Persist(student);
あなたがのようなものを使用することになり、学生のためのすべての質問を取得するには:
IList<Question> studentQuestions = student.GetAllQuestions();
2つのオプションの選択はOPから欠落している情報に依存します。集約ルートを特定する良い方法は、ライフサイクルロジックを調べることです。質問など
- 対応する生徒がいない質問はありますか?
- 質問がある学生から別の学生に「再割り当て」できますか?
- Studentを削除/アーカイブする際に、すべての質問も削除する必要がありますか?
ユーザーインターフェイスのニーズや外部APIが提供しなければならないものに基づいて実装する必要があるものを実装しないのはなぜですか?トランザクション内でやることは、他の同時トランザクションからは見えず、新しいトランザクションはすべてゼロから開始し、データベースからすべてをロードすることに気付いていますか? –