4

我有以下 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 飞机(作为左翼或右翼)或其他一些“飞行装置”。删除飞机应该级联删除它的机翼。

如何在代码优先的 fluent API 中进行配置?

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

4

1 回答 1

1

不幸的是,您不能将两个关联从同一个源表指向同一个目标表,同时对两者进行级联删除。

但是,这不是由于 EF 中的限制,而是由于 SQL Server 中的限制。

引用您可能要检查的另一个问题的答案:

SQL Server 对级联路径进行简单计数,而不是尝试确定是否确实存在任何循环,它假设最坏的情况并拒绝创建引用操作 (CASCADE):您可以并且仍然应该在没有引用操作的情况下创建约束。如果你不能改变你的设计(或者这样做会影响事情),那么你应该考虑使用触发器作为最后的手段。

于 2013-03-03T16:48:39.523 回答