前言:在前篇中,老是把领域类(Domain Class)翻译成模型类,由于个人理解它就是一个现实对象的抽象模型,不知道对不对。以防止未来可能的歧义,这篇开始仍是直接对Domain Class直译。html
前面咱们学习了默认Code-First约定,Code-First使用默认约定根据领域类构建概念模型,Code-First利用一个设计模型参考做为约定来覆盖配置,意思就是咱们能够经过配置领域类来覆写这些约定以提供给EF须要的信息,有两种方法配置领域类。app
数据注释是一个简单的配置基础特性,咱们能够将其应用在领域类或者领域类的属性上,大多数特性在System.ComponentModel.DataAnnotations命名空间下,可是,数据注释仅仅提供Fluent API配置的一个子集,也就是说若是咱们在数据模型中找不到一个特性,那就必须使用Fluent API进行配置了。dom
下面例子展现了使用了数据注释的Sudent类:ide
[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; } }
Fluent API 配置是做为EF从领域类构建模型的应用,咱们能够经过覆写DbContext类的OnModelCreating方法来注入配置,以下代码所示:学习
public class SchoolDBContext: DbContext { public SchoolDBContext(): base("SchoolDBConnectionString") { } public DbSet<Student> Students { get; set; } public DbSet<Standard> Standards { get; set; } public DbSet<StudentAddress> StudentAddress { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { //Configure domain classes using Fluent API here base.OnModelCreating(modelBuilder); } }
咱们也能够使用一个DbModelBuilder类的实例对象来配置领域类ui
后面的文章咱们会详细介绍数据注释和Fluent API的使用方法。spa