Code-First將多個實體映射到一張數據庫表


    要將多個實體映射到一個數據庫表必須要滿足兩個條件:

  1. 兩個實體必須是一對一關系;
  2. 兩個實體共享一個主鍵。

    下面我們直接用代碼來說明:  

View Code
 1 [Table("People")]
2 class Person
3 {
4 public int Id { get; set; }
5 public string Name { get; set; }
6 public bool Sex { get; set; }
7 public PersonDetail detail { get; set; }
8 }
9
10 [Table("People")]
11 class PersonDetail
12 {
13 [Key, ForeignKey("person")]
14 public int Id { get; set; }
15 public DateTime Birth { get; set; }
16 public byte[] Photo { get; set; }
17 public Person person { get; set; }
18 }
19
20 class myContext : DbContext
21 {
22 public DbSet<Person> personSet { get; set; }
23 public DbSet<PersonDetail> detailSet { get; set; }
24 protected override void OnModelCreating(DbModelBuilder modelBuilder)
25 {
26 modelBuilder.Entity<Person>().HasRequired(p => p.detail).WithRequiredPrincipal();
27 }
28 }

我們有兩種方法來做映射,一種是用Data Annotation,即以上代碼所示,給兩個實體分別加上TableAttribute,將映射的數據表明設置為相同。這里需要注意的是,Dependent Entity的主鍵一定要加上ForeignKeyAttribute,否則在數據庫中將會生成兩個Id,一個為主鍵,一個為外鍵。我們也可以用Fluent API去做,代碼如下:

View Code
1 modelBuilder.Entity<Person>().ToTable("People");
2 modelBuilder.Entity<PersonDetail>().ToTable("People");

用以上代碼建立數據庫:



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM