Condividi tramite


Procedura: configurare l'ereditarietà utilizzando Progettazione relazionale oggetti

Object Relational Designer (O/R Designer) supporta il concetto di ereditarietà a tabella singola poiché viene spesso implementato in sistemi relazionali. Nell'ereditarietà a tabella singola, esiste un database singolo che contiene campi sia per le informazioni padre che figlio. Insieme ai dati relazionali, una colonna discriminatore contiene il valore che determina la classe a cui appartiene un record.

Ad esempio, si consideri una tabella Persons che contiene tutte le persone impiegate in una società, alcune delle quali sono dipendenti mentre altre sono manager. La tabella Persons contiene una colonna denominata EmployeeType con un valore 1 per i manager e un valore 2 per i dipendenti e che costituisce la colonna discriminatore. In questo scenario è possibile creare una sottoclasse di dipendenti e popolarla solo con i record che hanno un valore 2 in EmployeeType. È anche possibile rimuovere le colonne non appropriate da ognuna delle classi.

La creazione di un modello a oggetti che usa l'ereditarietà (e corrisponde ai dati relazionali) può generare una certa confusione. Nella procedura riportata di seguito vengono illustrati i passaggi necessari per la configurazione dell'ereditarietà con Progettazione relazionale oggetti. Poiché potrebbe essere difficile seguire passaggi generici senza fare riferimento a una tabella e a colonne esistenti, viene fornita una procedura dettagliata in cui vengono usati dati effettivi. Per istruzioni dettagliate per la configurazione dell'ereditarietà mediante O/R Designer, vedere Procedura dettagliata: creazione di classi LINQ to SQL utilizzando l'ereditarietà a tabella singola (Progettazione relazionale oggetti).

Per creare classi di dati ereditate

  1. Aprire O/R Designer aggiungendo una voce Classi LINQ to SQL a un progetto Visual Basic o C# esistente.

  2. Trascinare la tabella che si desidera usare come classe di base in O/R Designer.

  3. Trascinare una seconda copia della tabella in O/R Designer e rinominarla. In tal modo si otterrà la classe derivata o sottoclasse.

  4. Fare clic su Inheritance nella scheda Progettazione relazionale oggetti della Casella degli strumenti, quindi selezionare la sottoclasse (ovvero, la tabella rinominata) e connetterla alla classe di base.

    Nota

    Fare clic sull'elemento Inheritance nella Casella degli strumenti e rilasciare il pulsante del mouse, selezionare la seconda copia della classe creata nel passaggio 3, quindi selezionare la prima classe creata nel passaggio 2.La freccia della linea di ereditarietà punterà alla prima classe.

  5. In ogni classe eliminare le proprietà dell'oggetto che non si desidera visualizzare e che non sono usate per le associazioni. Se si tenta di eliminare le proprietà dell'oggetto usate per le associazioni, verrà restituito un errore: Impossibile eliminare la proprietà <nome proprietà> perché partecipa all'associazione <nome associazione>.

    Nota

    Poiché una classe derivata eredita le proprietà definite nella relativa classe di base, non è possibile definire le stesse colonne in ogni classe(le colonne vengono implementate come proprietà). Per consentire la creazione di colonne nella classe derivata, è possibile impostare il modificatore di ereditarietà sulla proprietà della classe di base.Per altre informazioni, vedere Overriding Properties and Methods.

  6. Selezionare la linea di ereditarietà in O/R Designer.

  7. Nella finestra Proprietà impostare Discriminator Property sul nome di colonna usato per distinguere i record nelle classi.

  8. Impostare la proprietà Derived Class Discriminator Value sul valore nel database che designa il record come tipo ereditato (si tratta del valore archiviato nella colonna discriminatore e usato per designare la classe ereditata).

  9. Impostare la proprietà Base Class Discriminator Value sul valore che designa il record come tipo di base (si tratta del valore archiviato nella colonna discriminatore e usato per designare la classe di base).

  10. È anche possibile impostare eventualmente la proprietà Inheritance Default per definire un tipo in una gerarchia di ereditarietà usata durante il caricamento di righe che non corrispondono ad alcun codice di ereditarietà definito. In altre parole, se un record include un valore nella relativa colonna discriminatore che non corrisponde al valore nelle proprietà Derived Class Discriminator Value o Base Class Discriminator Value, il record verrà caricato nel tipo designato come Valore predefinito di ereditarietà.

Vedere anche

Attività

Procedura dettagliata: creazione di classi LINQ to SQL (Progettazione relazionale oggetti)

Procedura dettagliata: creazione di classi LINQ to SQL utilizzando l'ereditarietà a tabella singola (Progettazione relazionale oggetti)

Riferimenti

Ereditarietà (Guida per programmatori C#)

Concetti

Cenni preliminari su Progettazione relazionale oggetti

Altre risorse

Novità relative allo sviluppo di applicazioni dati in Visual Studio 2012

Accesso ai dati in Visual Studio

LINQ to SQL [LINQ to SQL]

Inheritance in Visual Basic