データ・モデル:
tTemplate (TemplateId int PK)
tPage (PageId int PK、TemplateId int FK)
tEmailMessage (EmailMessageId int PK、TemplateId int FK)
要件:
テンプレートの削除は、依存関係がない場合にのみ許可する必要があります。
TemplateService は、テンプレートの削除を担当します。
new TemplateService().Delete(myTemplate);
Page および Email モジュールは Template モジュールに依存していますが、Template モジュールはこれらの依存関係を認識していません。一部のセットアップでは、ページまたは電子メール モジュールが存在しません。基になるデータ モデルへの依存関係をどのように解決しますか? 項目を削除してもよいかどうかを確認するために、TemplateService に照会を開始させるにはどうすればよいですか?
EventBroker と Message Queue について調査しましたが、それらだけでどのように役立つかわかりません。また、.net イベント モデルだけを使用してこれを解決する方法もわかりません。
データの整合性を維持する方法を実際に探しているわけではありませんが、不要なサービス依存を引き起こすことなくサービス間通信を可能にする方法を探しています。テンプレートを削除しても問題がなく、tPage.TemplateId を null に設定することで依存関係が解決される PageService の実装があるかもしれません。他の実装では、カスケード削除を作成したい場合があります。