实体容器 (EDM)

在 实体数据模型 (EDM) 中,EntityContainer 是实体集和关联集的逻辑分组。因为编程模型是从概念架构定义语言 (CSDL) 架构中生成的,所以,EntityContainer 用于所定义的对象模型中的命名空间的规范。在存储架构定义语言 (SSDL) 架构中,EntityContainer 标识为基于该模型生成的应用程序保存数据的存储容器。这可以是采用关系数据库管理系统 (RDBMS) 或某种其他技术的数据库。

EntityContainer 控制实体和关系的范围。EDM 中的所有类型都在 EntityContainer 命名空间的范围中定义。EntitySetAssociationSet 的实例在 EntityContainer 的范围中创建。同样,EntityTypeAssociation 的实例在 EntitySetAssociationSet 的范围中创建。

在 XML 层次结构中,EntityContainer 元素独立于 Schema 元素,即使 EntityContainer 是在架构中定义的也是如此。这在将 EntityContainer 映射到存储时十分重要。在映射文件中,EntityContainer 的完全限定名称不包含架构命名空间名称。

EntityContainer 派生自 EDM 提供的基本 EntityContainer 构造。EntityContainer 指定派生自 EntitySetAssociationSet 的类型。

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>

另请参见

概念

关联 (EDM)

其他资源

架构和映射规范(实体框架)