原文:
我們在之前的部分看到,ef為每個具體的領域類建立資料庫表。然而,你可以使用繼承來設計域類。
物件導向技術包括「has a」和「is a」關係,而基於sql的關係模型在表之間只有乙個「has a」關係。 sql資料庫管理系統不支援型別繼承。那麼,將如何使用關聯式資料庫對映物件導向的領域類?
以下是在code-first中代表繼承層次結構的三種不同的方法:
1.table per hierarchy (tph):此方法為整個類繼承層次結構提供乙個表。表包括區分繼承類的識別符號列。這是entity framework中的預設繼承對映策略。
//簡單理解:基類和子類都建立在一張表裡,通過某個標識字段區分
2.table per type (tpt):此方法建議為每個類提供單獨的表。
//簡單理解:基類和子類分別建立表,公共欄位在主表,子表只有自己的字段。子表通過主鍵找到主表
3.table per concrete class (tpc):此方法為乙個具體的類提供了乙個表,但不是抽象類。因此,如果您在多個具體類中繼承抽象類,那麼抽象類的屬性將是具體類的每個表的一部分。
//簡單理解:子類分別建立表,子表包含基類的所有字段
我們在這裡不詳細介紹,詳細資訊可參考:ef裡的繼承對映關係tph、tpt和tpc的講解以及一些具體的例子
譯 第44節 EF6 儲存過程對映
ef6 code first提供了建立和使用儲存過程以新增,更新和刪除操作的功能。這在以前的entity framework版本中是沒有的。student實體 class student public int student id public string studentname 以下示例使用fl...
譯 第17節 資料註解 Column
原文 column屬性可以應用於類的屬性。預設code first約定建立與名稱相同的列名稱。column 屬性覆蓋此預設約定。ef code first將在給定屬性的column屬性中建立乙個具有指定名稱的列。請看以下示例 using system.componentmodel.dataannot...
譯 第45節 EF6 索引屬性
原文 entity framework 6提供了index屬性來建立資料庫中特定列的index,如下所示 class student public int student id public string studentname index public int registrationnumber...