程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 在Entity Framework 中實現繼承關系映射到數據庫表

在Entity Framework 中實現繼承關系映射到數據庫表

編輯:關於.NET

繼承關系映射到數據庫表中有多種方式:

第一種:TPH(table-per-hiaerachy) 每一層次一張表 (只有一張表)

僅使用名為父類的類型名的一張表,它包含了各個子類的所有屬性信息,使用區分列(Disciriminator column)(通常內容為子類的類型名)來區分哪一行表示什麼類型的數據。

第二種:TPT(Table-per-type) 每種類型都有一張表(父類及每個子類都有表)

父類、各子類各自都有一張表。父類的表中只有共同的數據,子類表中有子類特定的屬性。TPT很像類的繼承結構。父表格與子表格間通過外鍵關聯。

第三種:TPC(table-per-Concrete Class)具體子類一張表(子類有表)

映射非抽象類到各自的表。所有具體類的屬性,包括共有的繼承屬性,都會映射到數據庫的表中。它的數據庫的結構與沒有實現繼承關系的一樣。

TPC、TPH繼承模式一般有更好的性能,因為TPT會導致復雜的連接查詢。

 

在Entity Framework 中,繼承關系默認使用TPH模式。

使用方法:1、先定義父類。子類繼承父類,並實現自己的屬性。

2、將父類和子類加入到Context當中。如

public DbSet<Person> People {get;set;}

public DbSet<Instructor> Instructors {get;set;} 

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

這樣,在數據庫中只會有Person 一張表了,並產生了一個Discriminator 列來區分行是表示 Student還是表示Instructor.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved