Compartir a través de


clave de entidad

Una clave de entidad es una propiedad o un conjunto de propiedades de un tipo de entidad que se usan para determinar la identidad. Las propiedades que componen una clave de entidad se eligen en tiempo de diseño. Los valores de las propiedades de clave de entidad deben identificar de forma única una instancia de tipo de entidad dentro de un conjunto de entidades en tiempo de ejecución. Las propiedades que componen una clave de entidad deben elegirse para garantizar la unicidad de las instancias de un conjunto de entidades.

A continuación se muestran los requisitos para que un conjunto de propiedades sea una clave de entidad:

  • Ninguna clave de entidad dentro de un conjunto de entidades puede ser idéntica. Es decir, para dos entidades dentro de un conjunto de entidades, los valores de todas las propiedades que constituyen una clave no pueden ser iguales. Sin embargo, algunos (pero no todos) de los valores que componen una clave de entidad pueden ser los mismos.

  • Una clave de entidad debe constar de un conjunto de propiedades de tipo primitivo que sean no anulables e inmutables.

  • Las propiedades que componen una clave de entidad para un tipo de entidad determinado no pueden cambiar. No se puede permitir más de una clave de entidad posible para un tipo de entidad determinado; No se admiten claves suplentes.

  • Cuando una entidad participa en una jerarquía de herencia, la entidad raíz debe contener todas las propiedades que componen la clave de entidad y la clave de entidad debe definirse en el tipo de entidad raíz. Para obtener más información, consulte Entity Data Model: Herencia.

Ejemplo

En el diagrama siguiente se muestra un modelo conceptual con tres tipos de entidad: Book, Publishery Author. Las propiedades de cada tipo de entidad que componen su clave de entidad se indican con "(Key)". Tenga en cuenta que el Author tipo de entidad tiene una clave de entidad que consta de dos propiedades y NameAddress.

Modelo de ejemplo con tres tipos de entidad

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 CSDL siguiente define el Book tipo de entidad que se muestra en el diagrama anterior. Tenga en cuenta que la clave de entidad se define haciendo referencia a la ISBN propiedad del tipo de entidad.

<EntityType Name="Book">
  <Key>
    <PropertyRef Name="ISBN" />
  </Key>
  <Property Type="String" Name="ISBN" Nullable="false" />
  <Property Type="String" Name="Title" Nullable="false" />
  <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
  <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                      FromRole="Book" ToRole="Publisher" />
  <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                      FromRole="Book" ToRole="Author" />
</EntityType>

La ISBN propiedad es una buena opción para la clave de entidad porque un número de libro estándar internacional (ISBN) identifica de forma única un libro.

El CSDL siguiente define el Author tipo de entidad que se muestra en el diagrama anterior. Tenga en cuenta que la clave de entidad consta de dos propiedades y NameAddress.

<EntityType Name="Author">
  <Key>
    <PropertyRef Name="Name" />
    <PropertyRef Name="Address" />
  </Key>
  <Property Type="String" Name="Name" Nullable="false" />
  <Property Type="String" Name="Address" Nullable="false" />
  <NavigationProperty Name="Books" Relationship="BooksModel.WrittenBy"
                      FromRole="Author" ToRole="Book" />
</EntityType>

El uso Name y Address para la clave de entidad es una opción razonable, ya que es poco probable que dos autores del mismo nombre estén en la misma dirección. Sin embargo, esta opción para una clave de entidad no garantiza absolutamente claves de entidad únicas en un conjunto de entidades. En este caso, se recomienda agregar una propiedad, como AuthorId, que se podría usar para identificar de forma única un autor.

Consulte también