Entity Framework Core系列教程-11-配置
Entity Framework Core 配置
您已在上一章中了解了EF Core中的默认约定。很多时候,我们希望自定义实体到表的映射,并且不想遵循默认约定。 EF Core允许我们配置领域实体类,以自定义EF模型到数据库的映射。此编程模式称为“约定优于配置”。
有两种方法可以在EF Core中配置领域实体类(与EF 6中相同):
- 通过使用数据注释特性(Data Annotation)
- 通过使用Fluent API
数据注释特性(Data Annotation Attributes)
数据注释是一种基于特性的简单配置方法,其中可以将不同的.NET特性应用于领域模型类和属性以配置模型。
数据注释属性不专用于Entity Framework,因为它们在ASP.NET MVC中也使用。这就是为什么这些属性包含在单独的命名空间System.ComponentModel.DataAnnotations中的原因。
下面的示例演示如何将数据注释特性应用于领域实体类和属性以覆盖约定。
[Table("StudentInfo")] //定义映射的表名
public class Student
{
public Student() { }
[Key]//定义主键
public int SID { get; set; }
[Column("Name", TypeName="ntext")]//定义列名及类型
[MaxLength(20)]
public string StudentName { get; set; }
[NotMapped] //不在数据库中生成列
public int? Age { get; set; }
public int StdId { get; set; }
[ForeignKey("StdId")] //定义外键
public virtual Standard Standard { get; set; }
}
数据注释特性在EF 6和EF Core中相同。有关更多信息,请访问EF 6部分中的“数据注释”一章。
Fluent API
配置领域模型类的另一种方法是使用Entity Framework Fluent API。 EF Fluent API基于Fluent API设计模式(也称为Fluent接口),其中结果通过方法链来表示,下一节我们将介绍。