Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
, Publisher
y 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 Name
Address
.
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 Name
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 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.