前言:在前篇中,老是把領域類(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