级联删除*派生实体*

时间:2012-11-19 20:20:38

标签: c# .net sql-server entity-framework foreign-keys

好的,请查看以下简单对象模型:

  • 实体ConcreteThingy派生自AbstractThingy
  • 实体Owner最多可以包含1 ConcreteThingy
    • 没有两个Owners可以拥有相同的ConcreteThingy

EDMX:

enter image description here

数据库模型(TPT):

enter image description here

我想要的是什么:

我想要两件事,按优先级降序排列:

  • 我想要#1:最重要的是,我想要#2最简洁,最简洁,更清洁的解决方案 下方。
  • 我想要#2 :当我删除Owner时,我想自动删除任何可能关联的ConcreteThingy以及基座{{1} }}

我在做什么:

所以,自然,我去了EDMX,只是在所有者0↔0..1ConcreteThingy 关联上打开级联删除

enter image description here

这适用于将AbstractThingy关系的删除规则设置为 Cascade ,但我没有看到确保FK_ConcreteThingy_Owner的任何约束/数据库代码记录也会被删除。

enter image description here

同样,当我删除AbstractThingy时,相应的Owner(如果有的话)会被删除,但它会留下悬空ConcreteThingy,这并不奇怪,我不想要。

有人可以告诉我使用EF 5实现此类任务的标准方法是什么?

我试过让AbstractThingy抽象,希望SQL代码以某种方式推断出我想要的东西(可以理解的是,对于发生器会有某种鸡与蛋的难题,但至少,至少,至少我试过了。)

或者我应该在EDMX中定义某种smart-ass参考约束?

或者我希望自己去DB并自己编写代码,比如触发器等......!?!?对于EF及其设计工具来说,这将是一场[其他]惨败。

感谢。

0 个答案:

没有答案