好的,请查看以下简单对象模型:
ConcreteThingy
派生自AbstractThingy
。Owner
最多可以包含1 ConcreteThingy
。
Owners
可以拥有相同的ConcreteThingy
。EDMX:
数据库模型(TPT):
我想要两件事,按优先级降序排列:
Owner
时,我想自动删除任何可能关联的ConcreteThingy
,以及基座{{1} }} 所以,自然,我去了EDMX,只是在所有者0↔0..1ConcreteThingy 关联上打开级联删除
这适用于将AbstractThingy
关系的删除规则设置为 Cascade ,但我没有看到确保FK_ConcreteThingy_Owner
的任何约束/数据库代码记录也会被删除。
同样,当我删除AbstractThingy
时,相应的Owner
(如果有的话)会被删除,但它会留下悬空ConcreteThingy
,这并不奇怪,我不想要。
有人可以告诉我使用EF 5实现此类任务的标准方法是什么?
我试过让AbstractThingy
抽象,希望SQL代码以某种方式推断出我想要的东西(可以理解的是,对于发生器会有某种鸡与蛋的难题,但至少,至少,至少我试过了。)
或者我应该在EDMX中定义某种smart-ass参考约束?
或者我希望自己去DB并自己编写代码,比如触发器等......!?!?对于EF及其设计工具来说,这将是一场[其他]惨败。
感谢。