vincolo di integrità referenziale (Entity Data Model)
Un vincolo di integrità referenziale in Entity Data Model (EDM) è analogo a un vincolo di integrità referenziale in un database relazionale. Nello stesso modo in cui una colonna (o più colonne) da una tabella di database può fare riferimento alla chiave primaria di un'altra tabella, una proprietà (o più proprietà) di un tipo di entità può fare riferimento alla chiave di entità di un altro tipo di entità. Il tipo di entità al quale è fatto riferimento viene chiamato l'entità finale principale del vincolo. Il tipo di entità che fa riferimento all'entità finale principale viene chiamato l'entità finale dipendente del vincolo.
Un vincolo di integrità referenziale è definito come parte di un'associazione tra due tipi di entità. La definizione per un vincolo di integrità referenziale specifica le informazioni seguenti:
Entità finale principale del vincolo (un tipo di entità alla cui chiave di entità è fatto riferimento dall'entità finale dipendente).
Chiave di entità dell'entità finale principale.
Entità finale dipendente del vincolo (un tipo di entità che dispone di una o più proprietà che fanno riferimento alla chiave di entità dell'entità finale principale).
La proprietà o le proprietà di riferimento dell'entità finale dipendente.
Lo scopo dei vincoli di integrità referenziali in EDM è di assicurare che esistano sempre associazioni valide. Per ulteriori informazioni, vedere proprietà di chiave esterna (Entity Data Model).
Esempio
Nel diagramma seguente viene illustrato un modello concettuale con due associazioni: WrittenBy e PublishedBy. 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. Nel seguente linguaggio CSDL viene definito 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>