Share via


Conjuntos de asociaciones (EDM)

En el Entity Data Model (EDM), un AssociationSet (conjunto de asociaciones) es un contenedor lógico para las asociaciones de un único tipo. De igual forma, los conjuntos de entidades son contenedores de entidades del mismo tipo. Los conjuntos de entidades y asociaciones definidos en esquemas se asignan a las tablas de la base de datos que almacena los datos de las aplicaciones. Los conjuntos de entidades y asociaciones son el fundamento de las clases del modelo de objetos de programación que se usará en el código de una aplicación.

La designación AssociationSet se utiliza por dos razones:

  • Para delimitar los extremos de una asociación.

  • Para administrar las asociaciones entre instancias de entidades.

Dado que un EntityType se puede usar en más de un EntitySet, los conjuntos de asociaciones tienen que delimitar los extremos de la relación.

Una asociación conecta dos o más instancias de entidades que pertenecen a los dos conjuntos de entidades que se especifican mediante la asociación. Un AssociationSet contiene las instancias, si hay alguna, de la asociación.

Los conjuntos de entidades y los contenedores de entidades contienen lógicamente a los tipos de entidad y permiten la creación de instancias de los mismos. Del mismo modo, los conjuntos de asociaciones y los contenedores de entidades permiten la creación de instancias de las asociaciones.

Las asociaciones y los conjuntos de asociaciones son conceptos abstractos, igual que las entidades y los conjuntos de entidades. Cada implementación de un AssociationSet es un tipo derivado.

El atributo Association de un elemento AssociationSet especifica una asociación en la sintaxis del esquema del lenguaje de definición de esquemas conceptuales (CSDL):

<AssociationSet Name="CustomerOrderSet" Association="CustomerOrderType">

Los dos extremos de un elemento EntitySet se especifican en las propiedades End del AssociationSet. La asociación debe certificarse completamente mediante el espacio de nombres.

<AssociationSet Name="CustomerOrderSet" Association=" 
                        MyCompany.LOBSchema.CustomerOrderType">
    <End Role="Orders" EntitySet="CustomerSet" />
    <End Role="OrderedBy" EntitySet="OrderSet" />
</AssociationSet >

Las propiedades End del elemento AssociationSet especifican las instancias de EntitySet que se corresponden con estas instancias de EntityType.

En el ejemplo siguiente se muestran las declaraciones de dos tipos de entidad, dos conjuntos de entidades, una asociación y un conjunto de 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.LOBSchema" Alias="Self">

    <EntityType Name="Customer">
        <Key>
          <Property Name="CustomerId" Type="Int32" Nullable="false" />
        </Key>
    <!-- Other properties -->
    </EntityType>


<EntityType Name="Order">
    <Key>
      <PropertyRef Name="OrderId" />
    </Key>
    <Property Name="OrderId" Type="Int32" Nullable="false" />
    <!-- Other properties -->
</EntityType>

<Association Name="CustomerOrderType">
    <End Role="Orders" Type="Namespace.Customer" Multiplicity="1" />
    <End Role="OrderedBy" Type=" Namespace.Order" Multiplicity="0..*" />
</Association>

<EntityContainer Name="ContainerType">
    <EntitySet Name="CustomerSet" EntityType=" Namespace.Customer" />
    <EntitySet Name="OrderSet" EntityType=" MyCompany.LOBSchema.Order" />
    <AssociationSet Name="CustomerOrderSet" Association="CustomerOrderType">
        <End Role="Orders" EntitySet=" MyCompany.LOBSchema.CustomerSet" />
        <End Role="OrderedBy" EntitySet="MyCompany.LOBSchema.OrderSet" />
    </AssociationSet>
</EntityContainer>

</Schema>

Este ejemplo define primero las entidades Customer y Order**** de EntityType. Después, define la asociación denominada CustomerOrderType. Los conjuntos de entidades CustomerSet y OrderSet se declaran dentro del EntityContainer. Para obtener más información acerca de los contenedores de entidades, vea Contenedores de entidades (EDM).

El elemento AssociationSet también se define dentro del EntityContainer como un AssociationSet denominado CustomerOrderSet de tipo CustomerOrderType.

Las dos propiedades End de CustomerOrderSet son de tipos EntitySet, en este caso CustomerSet y OrderSet. Las instancias de Association se encuentran en CustomerOrderSet y conectan las instancias de Customer en CustomerSet con las instancias de Order en OrderSet.

Vea también

Conceptos

Asociación (EDM)
Relaciones del Entity Data Model
Tipos del Entity Data Model
Conjuntos de entidades (EDM)
Contenedores de entidades (EDM)
Esquemas EDM

Otros recursos

Especificación de asignaciones y esquemas (Entity Framework)