实体类与数据表的映射有一套专用的规则。Code First 采用的惯例优于预先设置的设计,在没有任何设置的情况下,自动检测模型结构并推导出默认设置以简化类的设计,因此不需要特别设置类的属性即可完成模型设计。
例如,当DbContext的模型类中定义了DbSet<Product>属性时, 按照惯例会以复数类名称为映射的数据表名称,因为Product自动映射到Products数据表。
而Product中的属性则逐一映射到Products数据表中的同名数据字段,比如Product类如下所示:
public class Product
{
public int Id {get;set;}
public string Name {get;set;}
public int Price {get;set;}
public string Category {get;set;}
}
其中名称为Id的属性(不区分大小写,Id与ID效果相同)自动成为主键,类名+Id的属性 名称同样会被推断为主键,例如ProductId
EntityFramework同样会在映射过程中自动推导出类属性与数据字段的映射类型