Share via


Contenedores de entidades (EDM)

En el Entity Data Model (EDM), un EntityContainer es una agrupación lógica de conjuntos de entidades y de conjuntos de asociaciones. Dado que el modelo de programación se genera a partir del lenguaje de definición de esquemas conceptuales (CSDL), un EntityContainer es la especificación de un espacio de nombres en el modelo de objetos que se define. En el esquema del lenguaje de definición de esquemas de almacenamiento (SSDL), el EntityContainer identifica el contenedor de almacenamiento que conserva los datos para las aplicaciones integradas en el modelo. Puede tratarse de una base de datos en un sistema de administración de bases de datos relacionales (RDBMS) o de alguna otra tecnología.

El EntityContainer controla el ámbito de las entidades y las relaciones. Todos los tipos del EDM se definen en el ámbito de un espacio de nombres EntityContainer. Las instancias de EntitySet y AssociationSet se crean en el ámbito de un EntityContainer. De igual forma, las instancias de un elemento EntityType o Association se crean en el ámbito de un EntitySet o AssociationSet.

En la jerarquía XML, el elemento EntityContainer es independiente del elemento Schema, aunque EntityContainer esté definido en un esquema. Esto es importante al asignar el EntityContainer para el almacenamiento. En el archivo de asignación, el nombre completo de EntityContainer no incluye el nombre del espacio de nombres del esquema.

Un EntityContainer se deriva de la construcción EntityContainer básica que proporciona el EDM. EntityContainer especifica tipos derivados de EntitySet y AssociationSet.

Un EntitySet definido en un EntityContainer puede contener un EntityType definido en un EntityContainer independiente.

Un AssociationSet no puede hacer referencia a un EntitySet definido en un EntityContainer independiente.

En el ejemplo siguiente se muestran las declaraciones de dos tipos de entidad y de un tipo de asociación, además de la declaración de un EntityContainer con dos conjuntos de entidades y un conjunto de asociaciones.

El siguiente esquema contiene las declaraciones de las entidades:

<?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>

El siguiente esquema contiene las declaraciones de las asociaciones:

<?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>

El siguiente esquema contiene la declaración del contenedor de entidades:

<?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>

Vea también

Conceptos

Asociación (EDM)

Otros recursos

Especificación de asignaciones y esquemas (Entity Framework)