Ereditarietà delle classi di dati (Progettazione relazionale oggetti)
Analogamente ad altri oggetti, le classi LINQ to SQL possono utilizzare l'ereditarietà ed essere derivate da altre classi. Nel codice è possibile specificare le relazioni di ereditarietà tra oggetti dichiarando che una classe eredita da un'altra. In un database le relazioni di ereditarietà vengono create in diversi modi. Object Relational Designer (O/R Designer) supporta il concetto di ereditarietà a tabella singola in quanto viene spesso implementato nei sistemi relazionali.
Nell'ereditarietà a tabella singola è presente una singola tabella di database che contiene colonne per le classi base e derivate. Insieme ai dati relazionali, una colonna discriminante contiene il valore che determina la classe a cui appartiene uno specifico 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 Type, che presenta un valore 1 per i manager e un valore 2 per i dipendenti, e che costituisce la colonna discriminante. In questo scenario, è possibile creare una sottoclasse di dipendenti e popolare la classe solo con i record che hanno un valore 2 nella colonna Type.
Quando si configura l'ereditarietà nelle classi dell'entità utilizzando O/R Designer, trascinare due volte la singola tabella che contiene i dati di ereditarietà sulla finestra di progettazione: una volta per ogni classe nella gerarchia di ereditarietà. Dopo avere aggiunto le tabelle alla finestra di progettazione, connetterle con un elemento di ereditarietà della casella degli strumenti Progettazione relazionale oggetti, quindi impostare le quattro proprietà di ereditarietà nella finestra Proprietà.
Proprietà di ereditarietà
Nella tabella seguente sono elencate le proprietà di ereditarietà e le rispettive descrizioni:
Proprietà |
Descrizione |
---|---|
Proprietà Discriminator |
Proprietà (mappata alla colonna) che determina a quale classe appartiene il record corrente. |
Valore discriminante classe base |
Valore (nella colonna definita come proprietà Discriminator) che determina che un record fa parte della classe base. |
Valore discriminante classe derivata |
Valore (nella proprietà definita come proprietà Discriminator) che determina che un record fa parte della classe derivata. |
Valore predefinito di ereditarietà |
Classe da popolare quando il valore nella proprietà definita come Proprietà Discriminator non corrisponde a Valore discriminante classe base o a Valore discriminante classe derivata. |
La creazione di un modello a oggetti che utilizza l'ereditarietà e corrisponde ai dati relazionali può generare una certa confusione. Questo argomento fornisce informazioni sui concetti di base e sulle proprietà singole richieste per la configurazione dell'ereditarietà. Negli argomenti seguenti viene fornita una spiegazione più chiara di come configurare l'ereditarietà con O/R Designer.
Argomento |
Descrizione |
---|---|
Procedura: configurare l'ereditarietà utilizzando Progettazione relazionale oggetti |
Viene descritto come configurare le classi di entità che utilizzano l'ereditarietà mediante O/R Designer. |
Vengono fornite istruzioni dettagliate per la configurazione delle classi di entità che utilizzano l'ereditarietà a tabella singola con O/R Designer. |
Vedere anche
Attività
Procedura dettagliata: creazione di classi LINQ to SQL (Progettazione relazionale oggetti)