proprietà di chiave esterna (Entity Data Model)
Una proprietà di chiave esterna in Entity Data Model (EDM) è una proprietà di tipo primitivo (o un set di proprietà di tipo primitivo) in un tipo di entità che contiene la chiave di entità di un altro tipo di entità.
Una proprietà di chiave esterna è analoga a una colonna di chiave esterna in un database relazionale. Nello stesso modo in cui le colonne di chiave esterna vengono utilizzate in un database relazionale per creare relazioni tra le righe nelle tabelle, le proprietà di chiave esterna in un modello concettuale vengono utilizzate per stabilire associazioni tra tipi di entità. Un vincolo di integrità referenziale viene utilizzato per definire un'associazione tra due tipi di entità quando uno dei tipi dispone di una proprietà di chiave esterna.
Esempio
Nel diagramma seguente viene illustrato un modello concettuale con tre tipi di entità: Book, Publisher e Author. Il tipo di entità Book dispone di una proprietà, PublisherId, che fa riferimento alla chiave di entità del tipo di entità Publisher quando si definisce un vincolo di integrità referenziale sull'associazione PublishedBy.
ADO.NET Entity Framework utilizza un linguaggio specifico di dominio detto CSDL (Conceptual Schema Definition Language) per definire i modelli concettuali. Il linguaggio CSDL seguente utilizza la proprietà di chiave esterna PublisherId per definire un vincolo di integrità referenziale sull'associazione PublishedBy illustrata nel modello concettuale precedente.
<Association Name="PublishedBy">
<End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
</End>
<End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
<ReferentialConstraint>
<Principal Role="Publisher">
<PropertyRef Name="Id" />
</Principal>
<Dependent Role="Book">
<PropertyRef Name="PublisherId" />
</Dependent>
</ReferentialConstraint>
</Association>