ここに私の質問につながる本当の例があります:ArticleId、コメントテキスト、電子メールアドレスを持つAddCommentToArticleCommandがあります。このコマンド:ドメインエンティティの変更を保存する
- は、記事が存在する場合
- (ドメインエンティティである)の記事を取得するために記事のリポジトリを使用して、それが記事にコメントを追加しarticle.AddComment(commentText、EMAILADDRESS)は、呼び出し、それができないときに例外をスローする(無効な電子メール形式、記事が閉じられている、コメントが埋め込まれていない、または長すぎるなど...)
- しかし、今は追加されたコメントを保存することが最善の方法はわからない?
articleRepository.Save(article)のような操作を行う必要がありますか?しかし、コメントだけが追加された場合は、どうして記事を保存しなければならないのですか?または、記事の保存のみを行うarticleRepository.SaveComment(コメント)のようなことをすることはできますか?または、あなたはここにどのようなアプローチをしますか?
ありがとうございます!
私はあなたがすでに存在することをしていることを実感したので、あなたのコメントを私は助けてくれました。だから私はアプローチを変えました:私はエンティティフレームワークをコードで最初に使用します。作業パターンの単位を実装しました。だから、EFの文脈は私のために変更を維持しています。フィードバックをお寄せいただきありがとうございます! –
@Dmitry +1これは非常に有効なポイントです。私の特別な状況では、使用されているORMの機能(ORMではないかもしれません)について何も仮定することはできませんので、ドメイン内での変更の追跡などを実装することは意味があります。 ORM実装に十分に縛られていると、確実にその機能を活用できますが、それはもちろん意味があります:) – MattDavey
実際、私のドメインはORMなどに依存していません。それはタマネギの建築の中心です。その周りに構築される作業単位は、ORMに依存し、変更トラッキングにそのコンテキストを使用します。しかし、ドメインにはドメインロジックしかありません。 –