Elemento Key (CSDL)
L'elemento Key è un elemento figlio dell'elemento EntityType e definisce una chiave di entità, ovvero una proprietà o un set di proprietà di un tipo di entità che determina l'identità. Le proprietà che costituiscono una chiave di entità vengono scelte in fase di progettazione. I valori delle proprietà della chiave di entità devono identificare in modo univoco in fase di esecuzione un'istanza del tipo di entità all'interno di un set di entità. Le proprietà che costituiscono una chiave di entità devono essere scelte per garantire univocità delle istanze in un set di entità. L'elemento Key definisce una chiave di entità facendo riferimento a una o più proprietà di un tipo di entità.
L'elemento Key può includere gli elementi figlio seguenti:
PropertyRef (uno o più elementi)
Elementi Annotation (zero o più elementi)
Attributi applicabili
È possibile applicare un qualsiasi numero di attributi di annotazione (attributi XML personalizzati) all'elemento Key. Tuttavia, gli attributi personalizzati non possono appartenere ad alcuno spazio dei nomi XML riservato a CSDL. I nomi completi per due attributi personalizzati qualsiasi non possono essere uguali.
Esempio
Nell'esempio seguente viene definito un tipo di entità denominato Book. La chiave di entità viene definita facendo riferimento alla proprietà ISBN del tipo di entità.
<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 proprietà ISBN è una valida scelta per la chiave di entità perché un codice ISBN (International Standard Book Number) identifica in modo univoco un libro.
Nell'esempio seguente viene mostrato un tipo di entità (Author) che dispone di una chiave di entità contenente due proprietà, Name e 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>
L'utilizzo di Name e Address per la chiave di entità è una scelta ragionevole, perché è improbabile che due autori con lo stesso nome vivano allo stesso indirizzo. Questa scelta per una chiave di entità non garantisce tuttavia in modo assoluto chiavi di entità univoche in un set di entità. In questo caso, è consigliabile aggiungere una proprietà, ad esempio AuthorId, che consente di identificare in modo univoco un autore.
Vedere anche
Concetti
Panoramica su Entity Framework
Specifiche CSDL
Elemento Schema (CSDL)
Altre risorse
Specifiche CSDL, SSDL e MSL
ADO.NET Entity Data Model Tools
entity key (Entity Data Model)