vincolo di integrità referenziale

Un vincolo di integrità referenziale in Entity Data Model (EDM) è analogo a un vincolo di integrità referenziale in un database relazionale. Allo stesso modo in cui una colonna (o colonne) di 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ò/possono 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'estremità 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 altre informazioni, vedere proprietà chiave esterna.

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.

RefConstraintModel

ADO.NET Entity Framework usa un linguaggio specifico di dominio (DSL) denominato Conceptual Schema Definition Language (CSDL) 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>

Vedi anche