EF学习笔记-CODE FIRST-约定
首先EF对关系数据库的映射遵循如下规则:
Fluent API 配置 override 数据注释 override 约定
System.Data.Entity.ModelConfiguration.Conventions(EntityFramework.dll)
==========约定==========
1 key(主键约定):EF默认会自动查找属性名为“Id”或【类名+“Id”】的组合,作为该类的主键
2 foreignKey(关系约定): 0、1...N
任何数据类型与主体主键属性相同、遵循以下一种格式的属性都表示关系的外键:
A class:
Parent{
ParentId
ICollection Childrens
}
B class:
Children{}
在Children类中,根据如下约定,这些属性名是外键。
<导航属性名称><主体主键属性> = ChildrensParentId
<主体类名><主键属性名称> = ParentParentId
<主体主键属性名称> = ParentId
其它:
通过Fluent API禁用或移除约定
可以移除在 System.Data.Entity.ModelConfiguration.Conventions 命名空间中定义的任何约定
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Configure Code First to ignore PluralizingTableName convention
// If you keep this convention, the generated tables
// will have pluralized names.
modelBuilder.Conventions.Remove();
}