上篇文章中我们了解了EF Core中的默认约定。很多时候,我们希望自定义实体到表映射,并且不希望遵循默认约定。EF Core允许我们配置域类,以便将EF模型自定义为数据库映射。该编程模式称为约定优于配置。
在EF Core中有两种配置域类的方法(与EF 6中的相同)。
- 通过使用数据注解属性( Data Annotation Attributes )
- 通过使用Fluent API
数据注解属性 (Data Annotation Attributes)
Data Annotations是一种基于属性的简单配置方法,可以将不同的.NET属性应用于域类和属性以配置模型。
数据注解属性不专用于实体框架,因为它们也用于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中的数据注解属性相同。
Fluent API
配置领域实体的另一种方法是使用Entity Framework Fluent API。EF Fluent API基于Fluent API设计模式(又名Fluent Interface),其结果由方法链组成。
在下一章中了解Fluent API。