我的数据库中有 EF 为我输入的列,即类名后跟 _Id。然而,许多文档都建议外键的命名约定是类名后跟 Id,不带下划线。
像这篇文章一样, 我不想在我的数据库中同时拥有这两种约定。
Code First 使用 [导航属性名称]_[相关类的主键] 模式在数据库中创建外键
为什么这两个明显不一致的约定?
我的数据库中有 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; }
}