簡體   English   中英

如何在 EF6 中創建外鍵

[英]How do I create a Foreign Key in EF6

我定義了兩個數據庫類,如下所示

[Table("Warehouses")]
public class Warehouse : FullAuditedEntity, IMustHaveTenant
{
    public virtual int TenantId { get; set; }

    [Required]
    [MaxLength(255)]
    public string Name { get; set; }

    public virtual WarehouseAddress Address { get; set; }
    [ForeignKey("FKWarehouseAddressId")]
    public int AddressId { get; set; }

}

[Table("Customers")]
public class Customer : FullAuditedEntity, IMustHaveTenant
{
    public virtual int TenantId { get; set; }
    public virtual Warehouse Warehouse { get; set; }
    [ForeignKey("FK_WarehouseId")]
    public int WarehouseId { get; set; }

    [Required]
    [MaxLength(255)]
    public string CustomerName { get; set; }

    public virtual DistributionRoute DistributionRoute { get; set; }
    [ForeignKey("FKRouteId")]
    public int RouteId { get; set; }

    public virtual CustomerAddress CustomerAddress { get; set; }
    [ForeignKey("FKAddressId")]
    public int AddressId { get; set; }
}

我想要的是客戶表中的每條記錄都有一個 WarehouseId 列,它指的是 Warehouses 表中的 Id 列。 我不確定我哪里出錯了,因為對於 DistributionRoute 表中的 RouteId 列,它工作正常。 有人可以幫忙嗎。 當我嘗試更新我的數據庫時,出現以下錯誤:

ALTER TABLE 語句與 FOREIGN KEY 約束“FK_Customers_Warehouses_WarehouseId”沖突。 沖突發生在數據庫“StoreDb”、表“dbo.Warehouses”、“Id”列中。

你必須修復這些類,我不知道其他屬性有什么用。 我只能猜測你不需要其中的一些,所以我只展示你需要在倉庫和客戶之間創建一對多的屬性

[Table("Warehouses")]
public class Warehouse : FullAuditedEntity, IMustHaveTenant
{
    .....
     [InverseProperty(nameof(Customer.Warehouse))]
     public virtual ICollection<Customer> Customers { get; set; }
}

[Table("Customers")]
public class Customer : FullAuditedEntity, IMustHaveTenant
{

    ......
   
    public int? WarehouseId { get; set; }
    [ForeignKey(nameof(WarehouseId))]
    [InverseProperty("Customers")]
    public virtual Warehouse Warehouse { get; set; }
}

你必須清理你的班級。 僅將數據庫中存在的屬性添加到此屬性。 在此之后,您必須進行數據庫遷移。

暫無
暫無

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

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