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

Contoso學習(八) 實現繼承

編輯:關於ASP.NET

在上一次教程中,你已經能夠處理並發異常。這個教程將會展示如何在數據模型中實現繼承。 在面向對象的程序設計中,你可以通過繼承來清除冗余的代碼。在這個教程中,你將要通過修改教師 Instructor 和學生 Student 類,以便使他們從包含類似 LastName 屬性的 Person 類中派生。對於 Web 頁面不需要任何改動,你需要修改一點代碼,這些修改將會被自動反射到數據庫中。

8-1  單表繼承 (Table-per-Hierarchy) 對類型表 (Table-per-Type) 繼承

在面向對象的程序設計中,你可以通過對相關的類使用繼承來使得工作更加簡單。例如,教師 Instructor 和學生 Student 類在學校 School 數據模型中共享多個屬性,帶來了冗余的代碼。

假設你希望清除在教師 Instructor 和學生 Student 之間所共享的屬性帶來的冗余代碼。可以創建一個 Person 基類,其中僅僅包含他們共享的屬性,然後,使得教師 Instructor 和學生 Student 類從 Person 基類派生,如下圖所示。

在數據庫中這種繼承結構可以有多種表現形式,可以創建一個名為 Person 的表,在這個獨立的表中包含教師和學生所有的信息。既包括他們獨自擁有的屬性 ( 例如教師的 HireDate ,以及學生的 EnrollmentDate ),也包括它們共有的屬性 ( 例如 LastName, FirstName )。通常你還需要一個用於識別當前類型的列 discriminator 來標識當前行的類型。( 在這裡,標識列的內容為 Instructor 來表示教師,Student 來表示學生 )

使用單個數據庫表來生成實體繼承結構的模式稱為單表繼承模式 TPH (table-per-hierarchy )。 另外一種方式是使得數據庫看起來類似繼承結構。例如,在 Person 表中僅僅包含他們共有的名字屬性,而將不同的時間分別保存到獨立的 Instructor 和 Student 表中。

這種每種實體類對應一張數據庫表的模式稱為類型表 TPT  繼承 (table per type )。 在 EF 中,TPH 繼承比 TPT 繼承有更好的性能,因為 TPT 繼承需要復雜的連接查詢。這個教程演示如何實現 TPH 繼承。你需要完成如下的步驟:

創建 Person 類,將 Instructor 和 Student 類從 Person 類中派生

在數據庫上下文類中增加模型到數據庫的映射代碼

將項目中的 InstructorID 和 StudentID 修改為使用 PersonID.

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