Share via


Key (Elemento) (CSDL)

El elemento Key es un elemento secundario del elemento EntityType y define una clave de entidad (una propiedad o un conjunto de propiedades de un tipo de entidad que determinan la identidad). Las propiedades que constituyen una entidad se eligen en tiempo de diseño. Los valores de las propiedades de clave de entidad deben identificar de forma inequívoca en tiempo de ejecución una instancia de tipo de entidad dentro de un conjunto de entidades. Las propiedades que constituyen una clave de entidad se deben elegir de tal forma que garanticen la unicidad de las instancias de un conjunto de entidades. El elemento Key define una clave de entidad haciendo referencia a una o varias de las propiedades de un tipo de entidad.

El elemento Key puede tener los elementos secundarios siguientes:

Atributos aplicables

Se puede aplicar cualquier número de atributos de anotación (atributos XML personalizados) al elemento Key. Sin embargo, es posible que los atributos personalizados no pertenezcan a ningún espacio de nombres XML reservado para CSDL. Dos atributos personalizados cualesquiera no pueden tener nombres completos idénticos.

Ejemplo

El ejemplo siguiente define un tipo de entidad denominado Book. La clave de entidad se define haciendo referencia a la propiedad ISBN 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 propiedad ISBN es una opción adecuada para la clave de entidad, ya que el International Standard Book Number (ISBN) permite identificar un libro de manera inequívoca.

El ejemplo siguiente muestra un tipo de entidad (Author) que tiene una clave de entidad que consta de dos propiedades, Name y Address.

<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 de Name y Address para la clave de entidad es una opción razonable, ya que no es probable que dos autores con el mismo nombre vivan en la misma dirección. Sin embargo, esta opción no garantiza por completo la existencia de claves de entidad únicas en un conjunto de entidades. En este caso, se recomienda la adición de una propiedad, como AuthorId, que se podría usar para identificar un autor de forma inequívoca.

Vea también

Conceptos

Información general de Entity Framework
Especificación CSDL
Schema (Elemento) (CSDL)

Otros recursos

Especificaciones CSDL, SSDL y MSL
ADO.NET Entity Data Model Tools
entity key (Entity Data Model)