2011-01-27 8 views
0

ルートエンティティである集計名 "ABCD"と、その集計で別のエンティティ "IJKL"があるとします。私の質問は、IJKLの実体を作成してデータベースに保存するための推奨される方法は何ですか?集約エンティティを作成するための推奨された方法

+0

ORMを使用してマップするか、イベントソースを使用して状態の変化を記録します。私のプロジェクトで –

+0

私がvoid SaveIJKL(IJKL ijklObject)のような方法でサービスを持つことができ、私のIABCDRepositoryでは私は私のアプリのサービス層では、この方法のように、公共の静的な無効SaveIJKL(IJKL ijklObject) – kamal

+0

を持つことができる – kamal

答えて

0

集約の定義によって、IJKLの存続期間はABCDの生存期間と結びついているため、IJKLを明示的に作成するべきではありません;代わりに、IJKLをどのように扱うか(内部的に)決定するABCDのロジックを呼び出す必要があります。

新しいインスタンスでは、集計作成ロジックを工場でカプセル化し、その工場が残りの集計とともにIJKLインスタンスを「新しくする」責任を負います。

永続性の懸念(既存のエンティティのロード/セーブ)については、ロジックはリポジトリのSaveABCDメソッドの一部である必要があります。これは集約全体の永続性を担います。

IJKLを直接操作する必要がある場合は、ABCDが正しいルートでないか、IJKLが別の集計になる必要があります。

+0

、私はルートエンティティである広告主の実体を持っていますボーナスプログラムはボーナスプログラムAに加入している場合、広告主は1ヶ月間に20の新しい広告を作成して100ドルのボーナスを得なければならないことを意味し、広告主広告主が作成するわけではありませんが、広告主はドロップダウンリストからbonsuprogramにのみ購読できます。今、管理者が新しいボーナスプログラムを現在のボーナスプログラムリストに追加したいのであれば、彼はそれをどうやってしますか?彼は広告主と一緒にはできないことを忘れないでください。 – kamal

関連する問題