Entity framework EntityFramework中删除时的约束错误

Entity framework EntityFramework中删除时的约束错误,entity-framework,code-first,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; } ... } 到目

我有以下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; }

    ...
}
到目前为止,一切都很顺利,直到我添加了这个新实体:

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; }

    ...
}

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

我想您需要将ILIst属性标记为虚拟以启用延迟加载。另外,我想知道您是否需要在OrderLine中创建虚拟Order属性,而不是使用OrderID引用

我不确定我是否正确,但我认为如果您试图删除订单而不先删除订单行,您也会遇到同样的问题

问题是OrderLineReturn将引用OrderLine,当您在不首先删除OrderLineReturn的情况下删除OrderLine时,它将给出该错误

我认为您可以启用级联删除…但这始终是一个风险

问候,

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"