两个关系

时间:2012-10-10 11:16:53

标签: ef-code-first associations entity-framework-5

我有以下Entity Framework 5代码的第一个类

public class Airplane
{
    public int Id { get; set; }

    public int LeftWingId { get; set; }
    public virtual Wing LeftWing { get; set; }

    public int RightWingId { get; set; }
    public virtual Wing RightWing { get; set; }
}

public class Wing
{
    public int Id { get; set; }
}

飞机有一个左翼和一个右翼(两者都是必需的)。机翼可能属于0..1飞机(作为左翼或右翼)或其他一些“飞行装置”。 删除飞机应该级联删除它的翅膀。

如何在代码优先的流畅API中配置它?

EF中是否可以有两个0..1 --- 1关联,并且两者都有级联删除?

1 个答案:

答案 0 :(得分:1)

不幸的是,你不能让两个关联从同一个源表指向同一个目标表,并且两者都有级联删除。

但是,这不是由于EF的限制,而是在SQL服务器中。

来自answer on another question的引用,您可能需要检查:

  

SQL Server对级联路径进行简单计数,而不是   试图弄清楚是否存在任何周期,它假设了   最糟糕的并且拒绝创建参考动作(CASCADE):你可以   并且仍然应该在没有参考的情况下创建约束   动作。如果你不能改变你的设计(或者这样做会妥协   那么你应该考虑使用触发器作为最后的手段。