Entity Data Model 對應案例 (應用程式案例)

Entity Framework 支援各種將概念模型對應至 Entity Data Model (EDM) 中關聯式資料的方式。如需詳細資訊,請參閱 Entity Framework 中的資料模型化

下面是 Entity Framework 目前支援的 Entity Data Model (EDM) 對應案例。

對應案例 描述

簡單對應

在這個對應案例中,概念模型中的每個實體都會對應至儲存模型中的單一資料表。這是 Entity Data Model 工具所產生的預設對應。如需詳細資訊,請參閱快速入門 (Entity Framework)

實體分割

在這個對應案例中,概念模型中單一實體的屬性會對應至兩個或多個基礎資料表中的資料行。在這個案例中,這些資料表必須共用通用的主索引鍵。如需詳細資訊,請參閱 HOW TO:使用對應至兩份資料表的單一實體來定義模型

儲存模型中的水平資料分割

在這個對應案例中,概念模型中的單一實體類型會對應至兩個或多個具有相同結構描述的資料表。此實體會根據概念模型中定義的條件,對應至資料表。例如,AdventureWorks Sales ModelSalesOrderHeader 實體的 OnlineOrderFlag 屬性布林值可用來將實體資料分割成資料來源中的個別資料表,而且第一個資料表用於線上訂單,而第二個資料表用於離線訂單。如需詳細資訊,請參閱 Condition 項目 (MappingFragment)

概念模型中的水平資料分割

在這個對應案例中,概念模型中具有相同屬性的多個實體類型會對應至單一資料表。有一個條件子句會用來指定資料表中的哪項資料屬於哪個實體類型。這種對應與每個階層的資料表繼承 (Inheritance) 對應很相似。

每個階層的資料表繼承

在這個對應案例中,繼承階層中的所有型別都會對應至單一資料表。有一個條件子句會用來定義實體類型。如需詳細資訊,請參閱 HOW TO:使用每個階層的資料表繼承來定義模型 (Entity Framework)

每個類型的資料表繼承

在這個對應案例中,所有型別都會對應至個別資料表。單獨屬於基底型別 (Base Type) 或衍生型別 (Derived Type) 的屬性會儲存在對應至該型別的資料表中。如需詳細資訊,請參閱 HOW TO:使用每個類型的資料表繼承來定義模型 (Entity Framework)

每個具象型別的資料表繼承

在這個對應案例中,非抽象型別會分別對應至個別資料表。其中每個資料表都必須具有對應至衍生型別之所有屬性的資料行,包括繼承自基底型別的屬性。

每個類型的多重實體

在這個對應案例中,單一實體類型會以概念模型中的兩個或多個個別實體集表示。每個實體集都會對應至儲存模型中的個別資料表。如需詳細資訊,請參閱 HOW TO:使用每個類型的多重實體來定義模型 (Entity Framework)

複雜類型

複雜類型是沒有索引鍵屬性之實體類型的非純量屬性。複雜類型可以包含其他巢狀複雜類型。複雜類型會對應至儲存模型中的資料表。如需詳細資訊,請參閱 HOW TO:定義具有複雜類型的模型 (Entity Framework)

Function Import 對應

在這個案例中,儲存模型中的預存程序 (Stored Procedure) 會對應至概念模型中的 FunctionImport 項目。這個函式的執行目的是要使用對應的預存程序來傳回實體資料。如需詳細資訊,請參閱 HOW TO:定義具有預存程序的模型 (Entity Framework)

修改函式對應

在這個案例中,插入、更新和刪除資料的預存程序會定義在儲存模型中。這些函式是針對實體類型所定義,可提供特定實體類型的更新功能。如需詳細資訊,請參閱預存程序支援 (Entity Framework)

定義查詢對應

在這個案例中,代表資料來源中資料表的查詢會定義在儲存模型中。對應至 SQL Server 資料庫時,此查詢會以資料來源的原生 (Native) 查詢語言表示,例如 Transact-SQL。這個 DefiningQuery 項目會對應至概念模型中的實體類型。此查詢是以存放區特有的查詢語言所定義。如需詳細資訊,請參閱 DefiningQuery 項目 (EntityContainer SSDL)。當您使用定義查詢時,無法使用標準更新處理序,將更新保存至資料來源。不過,您可以透過定義修改函式對應來進行更新。如需詳細資訊,請參閱預存程序支援 (Entity Framework)

查詢檢視對應

在這個案例中,唯讀對應定義在概念模型中的實體類型與儲存模型中的關聯式資料表之間。這個對應是根據針對儲存模型的 Entity SQL 查詢 (可傳回概念模型中的實體) 所定義。如需詳細資訊,請參閱 QueryView 項目 (EntitySetMapping)。當您使用查詢檢視時,無法使用標準更新處理序,將更新保存至資料來源。不過,您可以透過定義修改函式對應來進行更新。如需詳細資訊,請參閱預存程序支援 (Entity Framework)

AssociationSet 對應

關聯會定義實體之間的關聯性。在具有一對一或一對多關聯的簡單對應中,定義概念模型中之關聯性的關聯會對應至儲存模型中的關聯。此外還支援下列更進階的關聯集對應:

  • 多對多關聯。關聯的兩端會對應至儲存模型中的連結資料表。

  • 自我關聯。這種對應支援兩個屬於相同類型的實體之間的關聯,例如某位員工與另一位員工的關聯。

  • 衍生型別之間的關聯。這種對應支援某個階層中之衍生型別與第二個階層中之衍生型別之間的關聯。

如需詳細資訊,請參閱關聯 (EDM)

如需 Entity Data Model 工具所支援之對應案例的詳細資訊,請參閱 ADO.NET 實體資料模型設計工具概觀

另請參閱

概念

Entity Data Model 繼承 (應用程式案例)
Entity Framework 資源
查詢 Entity Data Model (應用程式案例)
編寫 Entity Data Model 類別 (應用程式案例)
定義 Entity Data Model (應用程式案例)

其他資源

程式設計指南 (Entity Framework)
範例 (Entity Framework)