譯 第7節 對映繼承策略

2022-01-11 06:33:28 字數 913 閱讀 5543

原文:

我們在之前的部分看到,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...