Compartir a través de


conjunto de entidades

Un conjunto de entidades es un contenedor lógico para instancias de un tipo de entidad e instancias de cualquier tipo derivado de ese tipo de entidad. (Para obtener información sobre los tipos derivados, vea Entity Data Model: Herencia). La relación entre un tipo de entidad y un conjunto de entidades es análoga a la relación entre una fila y una tabla de una base de datos relacional: al igual que una fila, un tipo de entidad describe la estructura de datos y, como una tabla, un conjunto de entidades contiene instancias de una estructura determinada. Un conjunto de entidades no es una construcción de modelado de datos; no describe la estructura de los datos. En su lugar, un conjunto de entidades 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 tipo de entidad para que se puedan asignar a un almacén de datos.

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

Para que una instancia de tipo de entidad exista en un conjunto de entidades, lo siguiente debe ser verdadero:

  • El tipo de la instancia es el mismo que el tipo de entidad en el que se basa el conjunto de entidades o el tipo de la instancia es un subtipo del tipo de entidad.

  • La clave de entidad de la instancia es única dentro del conjunto de entidades.

  • La instancia no existe en ningún otro conjunto de entidades.

    Nota:

    Se pueden definir varios conjuntos de entidades con el mismo tipo de entidad, pero una instancia de un tipo de entidad determinado solo puede existir en un conjunto de entidades.

No es necesario definir un conjunto de entidades para cada tipo de entidad en un modelo conceptual.

Ejemplo

En el diagrama siguiente se muestra un modelo conceptual con tres tipos de entidad: Book, Publishery Author.

Modelo de ejemplo con tres tipos de entidad

En el diagrama siguiente se muestran dos conjuntos de entidades (Books y Publishers) y un conjunto de asociaciones (PublishedBy) 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 entidades para cada tipo de entidad en el modelo conceptual mostrado anteriormente. Tenga en cuenta que el nombre y el tipo de entidad de cada conjunto de entidades 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 entidades por tipo (MEST). El siguiente CSDL define un contenedor de entidades con dos conjuntos de entidades para el tipo de Book entidad:

<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" />
  <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
    <End Role="Book" EntitySet="Books" />
    <End Role="Publisher" EntitySet="Publishers" />
  </AssociationSet>
  <AssociationSet Name="BookAuthor" Association="BooksModel.BookAuthor">
    <End Role="Book" EntitySet="Books" />
    <End Role="Author" EntitySet="Authors" />
  </AssociationSet>
</EntityContainer>

Consulte también