C# 解析对数据模型的依赖关系,而无需级联删除
数据模型: t模板(模板ID int PK)C# 解析对数据模型的依赖关系,而无需级联删除,c#,data-modeling,dependencies,C#,Data Modeling,Dependencies,数据模型: t模板(模板ID int PK) tPage(PageId int PK,TemplateId int FK) tEmailMessage(EmailMessageId int PK,TemplateId int FK) 要求: 仅当模板没有依赖关系时才允许删除模板 TemplateService负责删除模板: 新建TemplateService().Delete(myTemplate) 页面和电子邮件模块依赖于模板模块,而模板模块又不知道这些依赖关系。在某些设置中,页面或电子邮件模
tPage(PageId int PK,TemplateId int FK)
tEmailMessage(EmailMessageId int PK,TemplateId int FK) 要求: 仅当模板没有依赖关系时才允许删除模板 TemplateService负责删除模板: 新建TemplateService().Delete(myTemplate) 页面和电子邮件模块依赖于模板模块,而模板模块又不知道这些依赖关系。在某些设置中,页面或电子邮件模块不会出现事件。如何解决对底层数据模型的依赖关系?如何让TemplateService开始查询以确定是否可以删除该项 我已经对EventBroker和消息队列做了一些研究,但没有看到它们单独可以如何帮助我。我也不知道单独使用.net事件模型如何解决这个问题
我不是真的在寻找一种维护数据完整性的方法,而是一种允许服务间通信而不会导致不必要的服务依赖性的方法。我可能有一个PageService的实现,其中删除模板是可以的,并且通过将tPage.TemplateId设置为null可以解决依赖性问题。在其他实现中,我可能希望创建级联删除。这就是支持存储应该实现引用完整性的原因。在可能的情况下,您的模型将实现相同的东西,但只有在没有任何引用的情况下,删除才会起作用 此外,我建议不要在尝试删除之前检查所有数据,因为最终可能会出现可能导致问题的竞争条件。从效率的角度来看,您可以简单地从一开始就实现级联删除,假设顶级对象总是有子行
.Net模型仅在您拥有所有数据的情况下保证引用完整性,否则只会尝试删除,而不会保证删除。我不是在寻找一种维护数据完整性的方法,而是一种允许服务间通信而不会导致不必要的服务依赖性的方法。我已经编辑了我原来的帖子。