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