したがって、私の質問はこれに非常に関連しています:リポジトリとエンティティフレームワークを使用したドメインイベント内のエンティティの永続性?
編集:このトピックに関するより良い議論もここにあります:永続性に依存するドメイン イベントを発生させる場所 - サービス、リポジトリ、または UI?
ただし、正しいアプローチを取っていると仮定すると、私の質問はかなり単純で技術的です。
次のプロジェクトがあるとします。
MyDomainLayer -> very simple classes, Persitence Ignorance, a.k.a POCOs
MyInfrastructureLayer -> includes code for repositories, Entity Framework
MyApplicationLayer -> includes ASP.Net MVC controllers
MyServicesLayer -> WCF-related code
MyWebApplication -> ASP.Net MVC (Views, Scripts, etc)
イベントが発生した場合 (たとえば、グループ メンバーシップが付与された場合)、次の 2 つのことを (2 つの異なるレイヤーで) 行う必要があります。
- データを永続化する (DB に新しいグループ メンバーシップ レコードを挿入する)
- 関連するユーザーへの通知を作成するには (UI 関連)
冒頭で書いた最後のリファレンスの簡単な例を取り上げます。
ドメイン層には次のコードがあります。
public void ChangeStatus(OrderStatus status)
{
// change status
this.Status = status;
DomainEvent.Raise(new OrderStatusChanged { OrderId = Id, Status = status });
}
ベント ハンドラーが MyApplicationLayer にあると仮定しましょう (サービス レイヤーと通信できるようにするため)。次のコードがあります。
DomainEvent.Register<OrderStatusChanged>(x => orderStatusChanged = x);
ワイヤーインはどのように行われますか? 私は構造マップを使っていると思いますが、このワイヤーインコードはどのように正確に見えますか?