[英]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.