Compartir a través de


conjunto de asociaciones

Un conjunto de asociaciones es un contenedor lógico para las instancias de asociación del mismo tipo. Un conjunto de asociaciones no es una construcción del modelado de datos; es decir, no describe la estructura de datos o relaciones. En su lugar, un conjunto de asociaciones proporciona una construcción para que un entorno de hospedaje o de almacenamiento (como Common Language Runtime o una base de datos de SQL Server) agrupe las instancias de asociaciones a fin de que se puedan asignar a un almacén de datos.

Un conjunto de asociaciones se define dentro de un contenedor de entidades, que es una agrupación lógica de conjuntos de entidades y conjuntos de asociaciones.

Una definición de un conjunto de asociaciones contiene la información siguiente:

Ejemplo

El diagrama siguiente muestra un modelo conceptual con dos asociaciones: PublishedBy y WrittenBy. Aunque la información sobre los conjuntos de asociaciones no se muestra en el diagrama, el diagrama siguiente muestra un ejemplo de conjuntos de asociaciones y conjuntos de entidades basados en este modelo.

Example model with three entity types

El siguiente ejemplo muestra un conjunto de asociaciones (PublishedBy y dos conjuntos de entidades (Books y Publishers) basados en el modelo conceptual mostrado anteriormente. En el conjunto de entidades Books, Bi representa una instancia del tipo de entidad Book en tiempo de ejecución. De igual forma, Pj representa una instancia de Publisher en el conjunto de entidades Publishers. BiPj representa una instancia de la asociación PublishedBy en el conjunto de asociaciones PublishedBy.

Screenshot that shows a Sets example.

ADO.NET Entity Framework usa un lenguaje específico de dominio (DSL) denominado lenguaje de definición de esquemas conceptuales (CSDL) para definir los modelos conceptuales. El siguiente CSDL define un contenedor de entidad con un conjunto de asociaciones para cada asociación en el diagrama anterior. Observe que el nombre y asociación para cada conjunto de asociaciones se definen utilizando los atributos XML.

<EntityContainer Name="BooksContainer" >
  <EntitySet Name="Books" EntityType="BooksModel.Book" />
  <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
  <EntitySet Name="Authors" EntityType="BooksModel.Author" />
  <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
    <End Role="Book" EntitySet="Books" />
    <End Role="Publisher" EntitySet="Publishers" />
  </AssociationSet>
  <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
    <End Role="Book" EntitySet="Books" />
    <End Role="Author" EntitySet="Authors" />
  </AssociationSet>
</EntityContainer>

Es posible definir varios conjuntos de asociaciones por asociación, siempre que dos conjuntos de asociaciones no compartan un extremo del conjunto de asociaciones. En el siguiente CSDL se define un contenedor de entidades con dos conjuntos de asociaciones para la asociación WrittenBy. Observe que se han definido varios conjuntos de entidades para los tipos de entidad Book y Author y que ningún conjunto de asociaciones comparte un extremo del conjunto de asociaciones.

<EntityContainer Name="BooksContainer" >
  <EntitySet Name="Books" EntityType="BooksModel.Book" />
  <EntitySet Name="FictionBooks" EntityType="BooksModel.Book" />
  <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
  <EntitySet Name="Authors" EntityType="BooksModel.Author" />
  <EntitySet Name="FictionAuthors" EntityType="BooksModel.Author" />
  <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
    <End Role="Book" EntitySet="Books" />
    <End Role="Publisher" EntitySet="Publishers" />
  </AssociationSet>
  <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
    <End Role="Book" EntitySet="Books" />
    <End Role="Author" EntitySet="Authors" />
  </AssociationSet>
  <AssociationSet Name="FictionWrittenBy" Association="BooksModel.WrittenBy">
    <End Role="Book" EntitySet="FictionBooks" />
    <End Role="Author" EntitySet="FictionAuthors" />
  </AssociationSet>
</EntityContainer>

Consulte también