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 de modelado de datos; es decir, no describe la estructura de los datos ni las relaciones. En su lugar, un conjunto de asociaciones proporciona una construcción para un entorno de hospedaje o almacenamiento (como Common Language Runtime o una base de datos de SQL Server) para agrupar instancias de asociación para 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 asociación.

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

Ejemplo

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

Modelo de ejemplo con tres tipos de entidad

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

Captura de pantalla en la que se muestra un ejemplo de conjuntos.

El ADO.NET Entity Framework usa un lenguaje específico del dominio (DSL) denominado lenguaje de definición de esquema conceptual (CSDL) para definir modelos conceptuales. El siguiente CSDL define un contenedor de entidades con un conjunto de asociaciones para cada asociación del diagrama anterior. Tenga en cuenta que el nombre y la asociación de cada conjunto de asociaciones se definen mediante 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. El siguiente CSDL define un contenedor de entidades con dos conjuntos de asociaciones para la WrittenBy asociación. 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