EntityFramework Code-First 簡易教程(五)-------領域類配置

前言:在前篇中,老是把領域類(Domain Class)翻譯成模型類,由於個人理解它就是一個現實對象的抽象模型,不知道對不對。以防止未來可能的歧義,這篇開始仍是直接對Domain Class直譯。html

 

前面咱們學習了默認Code-First約定,Code-First使用默認約定根據領域類構建概念模型,Code-First利用一個設計模型參考做爲約定來覆蓋配置,意思就是咱們能夠經過配置領域類來覆寫這些約定以提供給EF須要的信息,有兩種方法配置領域類。app

  1. 數據註釋(DataAnnotations)
  2. Fluent API

 

數據註釋(DataAnnotation):

數據註釋是一個簡單的配置基礎特性,咱們能夠將其應用在領域類或者領域類的屬性上,大多數特性在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:

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

相關文章
相關標籤/搜索