C# 对*派生实体的级联删除*
好的,检查以下简单对象模型:C# 对*派生实体的级联删除*,c#,.net,sql-server,entity-framework,foreign-keys,C#,.net,Sql Server,Entity Framework,Foreign Keys,好的,检查以下简单对象模型: 实体ConcreteThingy源自AbstractThingy 实体所有者最多可以有1个具体内容。 任何两个所有者都不能拥有相同的具体内容 EDMX: DB型号(TPT): 我想要的是: 我想要两件事,按优先级降序排列: 我想要的东西#1:最重要的是,我想要最简单、最简洁、更干净的#2解决方案 下面 我想要的东西#2:当我删除一个所有者时,我想自动删除任何潜在关联的具体内容,以及基础抽象内容 我在做什么: 因此,很自然地,我去了EDMX,在所有者0
- 实体
源自ConcreteThingy
AbstractThingy
- 实体
最多可以有1个所有者
。具体内容
- 任何两个
都不能拥有相同的所有者
具体内容
- 任何两个
- 我想要的东西#1:最重要的是,我想要最简单、最简洁、更干净的#2解决方案 下面
- 我想要的东西#2:当我删除一个
所有者时,我想自动删除任何潜在关联的
,以及基础具体内容
抽象内容
FK\u ConcreteThingy\u Owner
关系的删除规则设置为Cascade时效果很好,但是我没有看到任何约束/DB代码可以确保AbstractThingy
记录也被删除
同样,当我删除一个所有者
时,相应的ConcreteThingy
(如果有的话)会被删除,但它会留下悬空的AbstractThingy
,这并不奇怪,我不想要它
有人能告诉我使用EF 5执行此类任务的标准方法是什么吗?
我尝试过将AbstractThingy
abstract,希望SQL代码能够以某种方式推断出我想要的东西(可以理解,对于生成器来说,会有一些鸡和蛋的难题,但嘿,至少我试过了。)
或者我应该在我的EDMX中定义某种智能参考约束吗
还是我会去数据库自己写代码,比如触发器等等。。。!?!?对于EF及其设计工具来说,这将是一场[另一场]惨败
谢谢。你能把抽象类和具体类颠倒过来吗?是否将抽象交给所有者,将具体交给抽象?然后,一系列级联删除将起作用。这也可能有助于在这个设计中将1:1的“抽象”结构规范化为“具体”结构。我知道你的意思,但这里有一个棘手的问题:设计是故意这样做的。这就是原因:这里有同样的问题:那是EF4.x。我想EF 5并没有改变这种情况。@user15741:把它写下来作为对那个问题的回答或评论。我没有问这个问题,问题负责人也没有注意到你在这里的评论。对不起,看到评论回复,以为是你。