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; }
}
今天只有初步提到如何自行設定與資料庫相關聯的對應,實際上細節是很多的,這樣會之後的文章一一提到。
一天一分享,身體好健康。
該追究的不是過去的原因,而是現在的目的。