2011-08-11 7 views
1

私のドメインモデル(簡体字)には、ストーリー、チーム、メンバー、およびコメントが含まれています。私は、ユーザーがストーリーについてのコメントを書くことができるようにする必要があり、ストーリー集約に属するコメントエンティティを持っているので、ストーリーに「AddComment」というメソッドがあります。コメントを保存するために集計をロードするのはここでは愚かなようですので、このエンティティを集計から削除する必要があるのか​​、それとも何か不足しているのでしょうか?私は、これらのタイプのシナリオのうちの2つ以上に遭遇することを確信しています。だから、どんな助けも素晴らしいでしょう!DDD集計質問(.NET、EF)

おかげ

+0

コメントはストーリーにのみ関連しているのですか、それとも実際には単独で集約しているのでしょうか? –

+0

あなたの質問に答えても、ストーリーなしではコメントは存在できません。 – Marco

答えて

2

Marco、技術的な実装がそのような変更をあなたのドメインモデルにもたらすことを可能にする衝動に抵抗します。私がそれをするたびに、私は後でそれを後悔しました。ストーリー内にコメントしか存在しない場合は、ストーリーを集計として保存し、テクノロジーをモデルに合わせて曲げます。

+0

を見ると無駄な時間になることはありませんあなたが技術を曲げると言うとき、たとえば、EFで、達成する方法を理解するこれは最初にエンティティをフェッチすることなくですか? – Marco

+0

これはおそらくうまくいかないかもしれませんが、遅延読み込みでは、少なくとも既存のコメントのようにすべての関連するエンティティを取り込むことはできません。コメントテーブルに直接挿入すると効率的ではないかもしれませんが、豊富でテスト可能なモデルを使用することは、通常、トレードオフの価値があります。 –

+0

あなたは怠惰なロードと熱心なロードを好むのですか?あなたのサービス層は、その仕事に基づいてどのエンティティを熱心に読み込むのを「知っていますか? – Marco

1

コメントは物語なしでは存在できない場合は、なぜコメントを保存するために話をロードするために愚かなように見えるのでしょうか?そして、あなたは実際にコメントを保存しておらず、それをストーリーに追加してから、ストーリーを保存します。

通常、操作を実行するために不必要な処理をしていることがあなた自身で分かった場合、ドメインモデルがより洗練されている必要があることを示しています。すべての一貫性境界要件(集計)を確認し、モデル内の各境界条件を確認します。最初のパスで欠落したものが表示されます。

Eric Evans saisのように、DDDは反復プロセスです。あなたは最初の数回失敗します:)

+0

ありがとうございます。私は境界のある状況で読まなくてはなりません。 – Marco

+0

あなたは[このビデオ](http://domaindrivendesign.org/library/evans_2009_1) –