Модель данных:
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, который, к счастью, не знает об этих зависимостях. В некоторых настройках модуль Page или Email не будет присутствовать. Как бы я разрешил зависимость от базовой модели данных? Как получить TemplateService для начала запроса, чтобы выяснить, можно ли удалить элемент?
Я провел некоторое исследование EventBrokers и Message Queues, но не понимаю, как они могут помочь мне одному. Я также не вижу, как это может решить только использование модели событий .net.
Я на самом деле не ищу способ поддержания целостности данных, а способ обеспечения межсервисного взаимодействия без возникновения нежелательных служебных зависимостей. У меня может быть реализация PageService, где удаление шаблона будет нормальным, и где зависимость будет разрешена путем установки значения tPage.TemplateId равным нулю. В других реализациях я могу захотеть создать каскадное удаление.