数据模型:
tTemplate (TemplateId int PK)
tPage (PageId int PK, TemplateId int FK)
tEmailMessage (EmailMessageId int PK, TemplateId int FK)
要求:
只有在没有依赖关系的情况下才允许删除模板。
TemplateService 负责删除模板:
新模板服务()。删除(我的模板);
Page 和 Email 模块依赖于 Template 模块,而后者又很高兴地不知道这些依赖关系。在某些设置中,页面或电子邮件模块将不存在。我将如何解决对底层数据模型的依赖?如何让 TemplateService 开始查询以了解是否可以删除该项目?
我对 EventBrokers 和 Message Queues 进行了一些研究,但看不到它们如何单独帮助我。我也看不到单独使用 .net 事件模型如何解决这个问题。
我并不是真的在寻找一种维护数据完整性的方法,而是一种允许服务间通信而不会导致不必要的服务依赖的方法。我可能有一个 PageService 的实现,可以在其中删除模板,并且可以通过将 tPage.TemplateId 设置为 null 来解决依赖关系。在其他实现中,我可能想要创建级联删除。