簡體   English   中英

EF:多列外鍵

[英]EF: Multiple column foreign keys

我有4個實體,用於存儲有關多倉庫訂單的詳細信息。

訂單-訂單的標題。

倉庫-倉庫的詳細信息。

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'中的角色'OrderLine_OrderWarehouse_Target'中的引用約束沖突。 因為從屬角色中的所有屬性都是不可為空的,所以主體角色的多重性必須為'1'。

您擁有的流利映射幾乎是正確的,但是如果嘗試以下操作,則不能在不可為空的屬性上指定可選關系。

modelBuilder.Entity<OrderLine>()
.HasRequired(u => u.OrderWarehouse)
.WithMany()
.HasForeignKey(u => new { u.OrderId, u.WarehouseId });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM