我的数据库中有EF为我放入的列,它们是类名后面跟着_Id。然而,许多文档建议外键的命名约定是类名后跟Id,不带下划线。
就像这篇文章一样,我不想在我的数据库中同时使用这两种约定。
Code First使用[导航属性名称]_[相关类主键]模式在数据库中创建外键
为什么这两个明显不一致的约定?
每个引用另一个实体的实体都应该有一个名为ForeignEntityId
的属性(注意Id中的小写d)。
如果您按照本例的确切模式设置实体,则所有列都应按照约定命名:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
public class Order
{
public int Id { get; set; }
public int CustomerId { get; set; } // this property is important
public string ProductName { get; set; }
public decimal Price { get; set; }
public virtual Customer Customer { get; set; }
}