[Entity Framework][Code First]Configuration

Configuration with Data Annotations and Fluent API

Code First在對應Domain Class與Table Schema的Default Convention通常不是精準的,所以Code First有提供兩種方式,可自行定義Domain Class 與 Table Schema的關係。

  • Data Annotations

  • Fluent API

這兩者能到的事情,是差不多的,看開發者的習慣用哪種都可以,只是一些比較進階configuration必須使用Fluent API才能辦到。

 

Data Annotation

命名空間System.ComponentModel.DataAnnotations底下有很多設定的Attribute,只要將這些Attribute套在Domain Class上就可以達到效果。

[Table("SpeciyStudent")]
public class Student
{
    [Key]
    public int StudentId { get; set; }

    [Required]
    [MaxLength(10)]
    public string Name { get; set; }

    [Required]
    public string Country { get; set; }

    public byte[] Photo { get; set; }

    public ICollection<Course> Courses { get; set; }
}

對應成資料庫的樣子

Fluent API

這是另外一種Fluent API的方式,也能達到一樣的效果

public class Model1 : DbContext
{
    public Model1()
        : base("name=Model1")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        var studentTable = modelBuilder.Entity<Student>()
            .ToTable("SpeciyStudent");

        studentTable.HasKey(x => x.StudentId);
        studentTable.Property(x => x.Name).IsRequired().HasMaxLength(10);
        studentTable.Property(x => x.Country).IsRequired();
    }

    public virtual DbSet<Student> Student { get; set; }    
}

 

今天只有初步提到如何自行設定與資料庫相關聯的對應,實際上細節是很多的,這樣會之後的文章一一提到。

 

 

一天一分享,身體好健康。

該追究的不是過去的原因,而是現在的目的。