2011-08-01 3 views
0

私のアプリケーションは、私は、私は次のパラメータでコマンド「AddApplicationToGroupCommand」を持っている場合があり、CQRSを使用しています、このコマンドは、私の集約を通過CQRS、コマンド/イベントパラメータには必要なものがすべて含まれていますか?

class AddApplicationToGroupCommand 
+ Guid GroupId; // AggregateRootId 
+ string ApplicationName; 

その後、イベントが公開されています。私のEventHandlerで処理され、最終的に私のデータベースに残った。

私の質問はベストプラクティスです。私は最後にしたいことは、私のEventHandlerは見ての通り、私はテーブル内のつもり挿入してるとき

Table Applications 
int ApplicationId 
varchar(255) ApplicationName 
varcher(255) GroupName 

が、私はGroupNameのに必要な次のパラメータを使用して、テーブルのアプリケーションに挿入ということです。ですから、これを行うには2つの方法があります。

上記のようにgroupIdを渡しても、私のEventHandlerではgroupIdの名前を取得するためにグループテーブルを照会する必要があります。私は上記の私のコマンドのパラメータにGroupNameのを渡す が、その後、私のなeventHandlerに私が直接

myContext.Applications.Insert(applicationName, groupName) 

を行うことができますどちらかCQRSは何を言いますか?

ありがとうございます。 [私の目標についてもっと明確化のために編集]

答えて

4

私はそれがあなたのドメインではなく、CQRS詳細だことをお勧めしたいです。

DDDをフォローしている場合は、集計に依存します - グループは別個の集計ですか?もしそうなら、あなたはIds(一般的には)を扱い、あなたのコマンドで関連するデータを検索クエリを使って検索することになります。

異なる集約でない場合、使用可能なグループ名を使用しても、そのような問題は発生しません。

また、上記の集計がベストプラクティスガイドラインであるかどうか、シルバーハンマーはないと主張します。または、グループ名が本当に必要な場合は、少しだけはっきりしてください。

+2

+1「シルバーハンマー」: – stakx

+0

「シルバーハンマーがあれば、すべてが銀色の弾丸のように見えますか? :p –

関連する問題