我有以下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
的主键由OrderId
和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"
有人可以帮我理解这个问题吗?
答案 0 :(得分:0)
我认为您需要将ILIst属性标记为虚拟以启用延迟加载。此外,我想知道您是否需要在OrderLine中创建虚拟订单属性而不是具有OrderID参考。
答案 1 :(得分:0)
我不确定我是否正确,但我认为如果你试图删除订单而不删除它的OrderLines,你会遇到同样的问题。
问题在于OrderLineReturn将引用OrderLine,当您删除OrderLine而不先删除OrderLineReturn时,它将为您提供该错误。
我认为您可以启用级联删除...但它始终存在风险。
此致