0
我有4個實體需要存儲有關多倉單的詳細信息。EF:多列外鍵
訂單 - 訂單的標題。
倉庫 - 倉庫的細節。
OrderLines - 訂單中產品的詳細信息(包括其所屬的倉庫)。
OrderWarehouse - 有關僅與單個倉庫有關的訂單的詳細信息。
public class Order
{
public int Id { get; set; }
public virtual ICollection<OrderWarehouse> OrderWarehouses { get; set; }
public virtual ICollection<OrderLine> OrderLines { get; set; }
}
public class Warehouse
{
public int Id { get; set; }
public virtual ICollection<OrderWarehouse> OrderWarehouses { get; set; }
public virtual ICollection<OrderLine> OrderLines { get; set; }
}
public class OrderLine
{
public int Id { get; set; }
public int OrderId { get; set; }
public int ProductId { get; set; }
public int WarehouseId { get; set; }
[ForeignKey("OrderId")]
public virtual Order Order { get; set; }
[ForeignKey("WarehouseId")]
public virtual Warehouse Warehouse { get; set; }
public virtual OrderWarehouse OrderWarehouse { get; set; } // THIS IS WHERE I AM STRUGGLING
}
public class OrderWarehouse
{
[Key, Column(Order = 0)]
public int OrderId { get; set; }
[Key, Column(Order = 1)]
public int WarehouseId { get; set; }
[ForeignKey("OrderId")]
public virtual Order Order { get; set; }
[ForeignKey("WarehouseId")]
public virtual Warehouse Warehouse { get; set; }
public virtual ICollection<OrderLine> OrderLines { get; set; } // THIS IS WHERE I AM STRUGGLING
}
我似乎無法得到在OrderLines和OrderWarehouse之間正確定義的關係。
該鍵由OrderId,WarehouseId組成。
我知道這需要在上下文中定義,但我所有的嘗試都會引發錯誤。
有人可以幫助我嗎?
編輯:
如果我試試這個:
modelBuilder.Entity<OrderLine>()
.HasOptional(u => u.OrderWarehouse)
.WithMany()
.HasForeignKey(u => new { u.OrderId, u.WarehouseId });
我得到:
OrderLine_OrderWarehouse:在 關係中的作用 引用約束 'OrderLine_OrderWarehouse_Target' 多重矛盾「 OrderLine_OrderWarehouse」。因爲從屬角色中的所有屬性 都是不可空的,所以Principal的多重性角色必須爲'1'。