Share via


Relazioni - Ef Designer

Nota

Questa pagina fornisce informazioni sulla configurazione delle relazioni nel modello tramite Entity Framework Designer. Per informazioni generali sulle relazioni in Entity Framework e su come accedere e modificare i dati tramite relazioni, vedere Relazioni e proprietà di navigazione.

Le associazioni definiscono le relazioni tra i tipi di entità in un modello. Questo argomento illustra come eseguire il mapping delle associazioni con Entity Framework Designer (EF Designer). L'immagine seguente mostra le finestre principali usate quando si lavora con Entity Framework Designer.

EF Designer

Nota

Quando si compila il modello concettuale, gli avvisi relativi a entità e associazioni non mappate possono essere visualizzati nell'elenco errori. È possibile ignorare questi avvisi perché dopo aver scelto di generare il database dal modello, gli errori verranno ignorati.

Panoramica delle associazioni

Quando si progetta il modello usando Entity Framework Designer, un file con estensione edmx rappresenta il modello. Nel file con estensione edmx un elemento Association definisce una relazione tra due tipi di entità. Un'associazione deve specificare i tipi di entità coinvolti nella relazione e il possibile numero di tipi di entità a ogni entità finale della relazione, che è noto come molteplicità. La molteplicità di un'associazione finale può avere un valore pari a uno (1), zero o uno (0,.1) o molti (*). Queste informazioni vengono specificate in due elementi End figlio.

In fase di esecuzione, è possibile accedere alle istanze del tipo di entità alla fine di un'associazione tramite le proprietà di navigazione o le chiavi esterne (se si sceglie di esporre chiavi esterne nelle entità). Con chiavi esterne esposte, la relazione tra le entità viene gestita con un elemento ReferialConstraint (un elemento figlio dell'elemento Association ). È consigliabile esporre sempre chiavi esterne per le relazioni nelle entità.

Nota

In molti-a-molti (*:*) non è possibile aggiungere chiavi esterne alle entità. In una relazione *:*, le informazioni sull'associazione sono gestite con un oggetto indipendente.

Per informazioni sugli elementi CSDL (ReferialConstraint, Association e così via) vedere la specifica CSDL.

Creare ed eliminare associazioni

La creazione di un'associazione con Ef Designer aggiorna il contenuto del modello del file con estensione edmx. Dopo aver creato un'associazione, è necessario creare i mapping per l'associazione (descritti più avanti in questo argomento).

Nota

In questa sezione si presuppone che siano già state aggiunte le entità che si desidera creare un'associazione tra il modello.

Per creare un'associazione

  1. Fare clic con il pulsante destro del mouse su un'area vuota dell'area di progettazione, scegliere Aggiungi nuovo e selezionare Associazione....

  2. Compilare le impostazioni per l'associazione nella finestra di dialogo Aggiungi associazione .

    Add Association

    Nota

    È possibile scegliere di non aggiungere proprietà di navigazione o proprietà di chiave esterna alle entità alla fine dell'associazione deselezionando le caselle di controllo **Proprietà di navigazione **e **Aggiungi proprietà di chiave esterna alle <caselle di controllo Entity **nome> tipo di entità**. Se si aggiunge una sola proprietà di navigazione, l'associazione sarà attraversabile in una sola direzione. Se non si aggiungono proprietà di navigazione, è necessario scegliere di aggiungere proprietà di chiave esterna per accedere alle entità finali dell'associazione.

  3. Fare clic su OK.

Per eliminare un'associazione

Per eliminare un'associazione, eseguire una delle operazioni seguenti:

  • Fare clic con il pulsante destro del mouse sull'associazione nell'area di Progettazione EF e scegliere Elimina.

  • OPPURE

  • Selezionare una o più associazioni e premere il tasto CANC.

Includere proprietà di chiave esterna nelle entità (vincoli referenziale)

È consigliabile esporre sempre chiavi esterne per le relazioni nelle entità. Entity Framework usa un vincolo referenziale per identificare che una proprietà funge da chiave esterna per una relazione.

Se è stata selezionata la casella di controllo Aggiungi proprietà chiave esterna al nome> del tipo di entità Entity durante la <creazione di una relazione, questo vincolo referenziale è stato aggiunto automaticamente.

Quando si usa Entity Framework Designer per aggiungere o modificare un vincolo referenziale, Ef Designer aggiunge o modifica un elemento ReferialConstraint nel contenuto CSDL del file con estensione edmx.

  • Fare doppio clic sull'associazione che si desidera modificare. Verrà visualizzata la finestra di dialogo Vincolo referenziale.

  • Nell'elenco a discesa Principal (Entità) selezionare l'entità principal nel vincolo referenziale. Le proprietà chiave dell'entità vengono aggiunte all'elenco Chiave principale nella finestra di dialogo.

  • Nell'elenco a discesa Dipendente selezionare l'entità dipendente nel vincolo referenziale.

  • Per ogni chiave principale con una chiave dipendente, selezionare una chiave dipendente corrispondente dagli elenchi a discesa nella colonna Chiave dipendente.

    Ref Constraint

  • Fare clic su OK.

Creare e modificare mapping di associazioni

È possibile specificare il mapping di un'associazione al database nella finestra Dettagli mapping di Entity Framework Designer.

Nota

È possibile mappare solo i dettagli per le associazioni che non dispongono di un vincolo referenziale specificato. Se nell'entità viene specificato un vincolo referenziale, nell'entità viene inclusa una proprietà di chiave esterna ed è possibile usare Dettagli mapping per l'entità per controllare la colonna a cui viene mappata la chiave esterna.

Creare un mapping di associazione

  • Fare clic con il pulsante destro del mouse su un'associazione nell'area di progettazione e scegliere Mapping tabella. Verrà visualizzato il mapping dell'associazione nella finestra Dettagli mapping.

  • Fare clic su Aggiungi tabella o vista. Verrà visualizzato un elenco a discesa che include tutte le tabelle presenti nel modello di archiviazione.

  • Selezionare la tabella alla quale l'associazione verrà mappata. Nella finestra Dettagli mapping vengono visualizzate entrambe le estremità dell'associazione e le proprietà chiave per il tipo di entità a ogni fine.

  • Per ogni proprietà chiave, fare clic sul campo Colonna e selezionare la colonna a cui verrà eseguito il mapping della proprietà.

    Mapping Details 4

Modificare un mapping di associazione

  • Fare clic con il pulsante destro del mouse su un'associazione nell'area di progettazione e scegliere Mapping tabella. Verrà visualizzato il mapping dell'associazione nella finestra Dettagli mapping.
  • Fare clic su Mappe su <Nome> tabella. Verrà visualizzato un elenco a discesa che include tutte le tabelle presenti nel modello di archiviazione.
  • Selezionare la tabella alla quale l'associazione verrà mappata. Nella finestra Dettagli mapping vengono visualizzate entrambe le estremità dell'associazione e le proprietà chiave per il tipo di entità a ogni fine.
  • Per ogni proprietà chiave, fare clic sul campo Colonna e selezionare la colonna a cui verrà eseguito il mapping della proprietà.

Modificare ed eliminare le proprietà di navigazione

Le proprietà di navigazione sono proprietà di scelta rapida usate per individuare le entità alla fine di un'associazione in un modello. È possibile creare le proprietà di navigazione quando si crea un'associazione tra due tipi di entità.

Per modificare le proprietà di navigazione

  • Selezionare una proprietà di navigazione nell'area di Progettazione EF. Le informazioni sulla proprietà di navigazione vengono visualizzate nella finestra Proprietà di Visual Studio.
  • Modificare le impostazioni delle proprietà nella finestra Proprietà .

Per eliminare le proprietà di navigazione

  • Se le chiavi esterne non sono esposte nei tipi di entità nel modello concettuale, è possibile che l'eliminazione di una proprietà di navigazione renda l'associazione corrispondente attraversabile in un'unica direzione o non attraversabile.
  • Fare clic con il pulsante destro del mouse su una proprietà di navigazione nell'area di Progettazione EF e scegliere Elimina.