EntityFramework中删除时的约束错误

时间:2013-05-22 08:24:36

标签: entity-framework code-first

我有以下EF型号:

public class Order
{
    public string Id { get; set; }

    public IList<OrderLine> Lines { get; set; }

    ...
}

public class OrderLine
{
    public string OrderId { get; set; }
    public int Position { get; set; }

    ...
}

OrderLine的主键由OrderIdPosition组成:

HasKey(l => new {l.Position, l.OrderId});

到目前为止,一切运作良好,直到我添加了这个新实体:

public class OrderLineReturn
{
    public string Id { get; set; }

    ...
}

public class OrderLine
{
    public string OrderId { get; set; }
    public int Position { get; set; }

    public IList<OrderLineReturn> LineReturns { get; set; }

    ...
}

现在我在删除订单时遇到错误:

DELETE instruction is in conflict with the REFERENCE constraint "FK_dbo.OrderLineReturn_dbo.OrderLine_OrderLine_Position_OrderLine_OrderId"

有人可以帮我理解这个问题吗?

2 个答案:

答案 0 :(得分:0)

我认为您需要将ILIst属性标记为虚拟以启用延迟加载。此外,我想知道您是否需要在OrderLine中创建虚拟订单属性而不是具有OrderID参考。

答案 1 :(得分:0)

我不确定我是否正确,但我认为如果你试图删除订单而不删除它的OrderLines,你会遇到同样的问题。

问题在于OrderLineReturn将引用OrderLine,当您删除OrderLine而不先删除OrderLineReturn时,它将为您提供该错误。

我认为您可以启用级联删除...但它始终存在风险。

此致