實體容器 (EDM)
在 實體資料模型 (EDM) 中,EntityContainer 是實體集和關聯集的邏輯群組。由於此程式撰寫模型 (Programming Model) 是從概念結構定義語言 (CSDL) 結構描述建置而來,所以 EntityContainer 是所定義之物件模型中的命名空間 (Namespace) 規格。在存放結構定義語言 (SSDL) 結構描述中,EntityContainer 會識別針對此模型上建置之應用程式保存資料的存放區容器。這可以是關聯式資料庫管理系統 (RDBMS) 或某個其他技術中的資料庫。
EntityContainer 會控制實體與關聯性的範圍。EDM 中的所有型別都是在 EntityContainer 命名空間的範圍內定義。EntitySet 和 AssociationSet 的執行個體是在 EntityContainer 的範圍內建立。同樣地,EntityType 或 Association 的執行個體是在 EntitySet 或 AssociationSet 的範圍內建立。
在 XML 階層中,EntityContainer 項目和 Schema 項目是分開的,即使在結構描述內定義 EntityContainer 也一樣。對於將 EntityContainer 對應至儲存區來說,這一點非常重要。在對應檔中,EntityContainer 的完整名稱不包含結構描述命名空間名稱。
EntityContainer 是衍生自 EDM 所提供的基本 EntityContainer 建構。EntityContainer 會指定衍生自 EntitySet 和 AssociationSet 的型別。
EntityContainer 中所定義的 EntitySet 可包含定義於個別 EntityContainer 內的 EntityType。
AssociationSet 無法參考定義於個別 EntityContainer 內的 EntitySet。
下列範例會顯示兩個實體類型與一個關聯型別的宣告,然後顯示 EntityContainer 搭配兩個實體集和一個關聯集的宣告。
下列結構描述包含實體宣告:
<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
Namespace="MyCompany.EntityTypes" Alias="Self">
<EntityType Name="Order">
<Key>
<PropertyRef Name="OrderId" />
</Key>
<Property Name="OrderId" Type="String" />
<!--Other Properties-->
</EntityType>
<EntityType Name="Customer">
<Key>
<PropertyRef Name="CustomerId" />
</Key>
<Property Name="CustomerId" Type="String" />
<!--Other Properties-->
</EntityType>
</Schema>
下列結構描述包含關聯宣告:
<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
Namespace="MyCompany.RelationshipTypes">
<Using Namespace="MyCompany.EntityTypes" Alias="basicTypes"/>
<Association Name="CustomerOrder">
<End Type="basicTypes.Customer" Multiplicity="1" />
<End Type="basicTypes.Order" Multiplicity="*" />
</Association>
</Schema>
下列結構描述包含實體容器宣告:
<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm"
xmlns="https://schemas.microsoft.com/ado/2006/04/edm"
Namespace="MyCompany.ContainerType">
<EntityContainer name="ContainerOne">
<Using Namespace="MyCompany.EntityTypes" Alias="basicTypes"/>
<Using Namespace="MyCompany.RelationshipTypes" Alias="relnTypes"/>
<EntitySet Name="CustomerSet" EntityType="basicTypes.Customer"/>
<EntitySet Name="OrderSet" EntityType="basicTypes.Order"/>
<AssociationSet Name="CustomerOrderSet" Association="relnTypes.CustomerOrder">
<End EntitySet="CustomerSet" Role="Orders"/>
<End EntitySet="OrderSet" Role="OrderedBy"/>
</AssociationSet>
</EntityContainer>
</Schema>