0

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

    ...
}

的主键OrderLineOrderId和组成Position

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"

谁能帮我理解这个问题?

4

2 回答 2

0

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

问题是 OrderLineReturn 将具有对 OrderLine 的引用,并且当您删除 OrderLine 而不首先删除 OrderLineReturn 时,它会给您该错误。

我认为您可以启用级联删除……但这总是有风险的。

问候,

于 2013-05-22T10:22:07.970 回答
0

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

于 2013-05-22T09:56:37.257 回答