Mapping basato su attributi

In LINQ to SQL viene eseguito il mapping di un database SQL Server a un modello a oggetti di LINQ to SQL applicando attributi o usando un file di mapping esterno. In questo argomento viene descritto l'approccio basato sugli attributi.

Nella forma più elementare, in LINQ to SQL viene eseguito il mapping di un database a un oggetto DataContext, di una tabella a una classe e di colonne e relazioni alle proprietà in tali classi. È inoltre possibile usare attributi per eseguire il mapping di una gerarchia di ereditarietà nel modello a oggetti. Per altre informazioni, vedere: Procedura: Generare il modello a oggetti in Visual Basic o C#.

Gli sviluppatori che usano Visual Studio in genere eseguono il mapping basato su attributi usando Object Relational Designer. È anche possibile usare lo strumento da riga di comando SQLMetal o codificare gli attributi manualmente. Per altre informazioni, vedere: Procedura: Generare il modello a oggetti in Visual Basic o C#.

Nota

Il mapping può inoltre essere eseguito usando un file XML esterno. Per altre informazioni, vedere Mapping esterno.

Nelle sezioni seguenti viene descritto in dettaglio il mapping basato sugli attributi. Per altre informazioni, vedere lo spazio dei nomi System.Data.Linq.Mapping.

Attributo DatabaseAttribute

Usare questo attributo per specificare il nome predefinito del database quando non viene fornito un nome dalla connessione. Questo attributo è facoltativo, ma se viene usato è necessario applicare la proprietà Name, come descritto nella tabella seguente.

Proprietà Type Default Descrizione
Name Stringa Vedere Name Usato con la relativa proprietà Name, consente di specificare il nome del database.

Per ulteriori informazioni, vedere DatabaseAttribute.

Attributo TableAttribute

Usare questo attributo per definire una classe come classe dell'entità associata a una visualizzazione o tabella di database. In LINQ to SQL le classi con questo attributo vengono gestite come classi persistenti. La tabella seguente descrive la proprietà Name.

Proprietà Type Default Descrizione
Name Stringa Stessa stringa del nome della classe Consente di definire una classe come classe dell'entità associata a una tabella di database.

Per ulteriori informazioni, vedere TableAttribute.

Attributo ColumnAttribute

Usare questo attributo per definire un membro di una classe dell'entità per rappresentare una colonna in una tabella di database. È possibile applicare questo attributo a qualsiasi campo o proprietà.

Solo i membri identificati come colonne vengono recuperati e resi persistenti quando le modifiche al database vengono salvate da LINQ to SQL. I membri privi di questo attributo vengono considerati non persistenti e non vengono inviati per inserimenti o aggiornamenti.

La tabella seguente descrive le proprietà di questo attributo.

Proprietà Type Default Descrizione
AutoSync AutoSync Mai Indica a Common Language Runtime (CLR) di recuperare il valore dopo un'operazione di inserimento o di aggiornamento.

Opzioni: Always, Never, OnUpdate, OnInsert.
CanBeNull Booleano true Indica che una colonna può contenere valori null.
DbType String Tipo di colonna di database dedotto Consente di usare tipi di database e modificatori per specificare il tipo di colonna del database.
Expression String Vuoto Consente di definire una colonna calcolata in un database.
IsDbGenerated Booleano false Consente di indicare che una colonna contiene valori generati automaticamente dal database.
IsDiscriminator Booleano false Consente di indicare che la colonna contiene un valore discriminante per una gerarchia di ereditarietà di LINQ to SQL.
IsPrimaryKey Booleano false Consente di specificare che questo membro della classe rappresenta una colonna che corrisponde o fa parte delle chiavi primarie della tabella.
IsVersion Booleano false Consente di identificare il tipo di colonna del membro come un timestamp del database o un numero di versione.
UpdateCheck UpdateCheck Always, a meno che, per un membro, IsVersion sia true Consente di specificare l'approccio adottato da LINQ to SQL per il rilevamento dei conflitti di concorrenza ottimistici.

Per ulteriori informazioni, vedere ColumnAttribute.

Nota

I valori delle proprietà di archiviazione AssociationAttribute e ColumnAttribute rispettano la distinzione tra maiuscole e minuscole. Verificare, ad esempio, che per i valori dell'attributo della proprietà AssociationAttribute.Storage venga usata la stessa combinazione di maiuscole e minuscole adoperata per i nomi di proprietà corrispondenti usati in altri punti del codice. Ciò si applica a tutti i linguaggi di programmazione .NET, anche a quelli che in genere non distinguono tra maiuscole e minuscole, tra cui Visual Basic. Per altre informazioni sulla proprietà di archiviazione, vedere DataAttribute.Storage.

Attributo AssociationAttribute

Usare questo attributo per definire una proprietà che rappresenti un'associazione nel database, ad esempio una relazione da chiave esterna a chiave primaria. Per altre informazioni sulle relazioni, vedere Procedura: Eseguire il mapping delle di relazioni di database.

La tabella seguente descrive le proprietà di questo attributo.

Proprietà Type Default Descrizione
DeleteOnNull Boolean false Quando viene inserita in un'associazione i cui membri della chiave esterna sono tutti non nullable, consente di eliminare l'oggetto quando l'associazione viene impostata su null.
DeleteRule String None Consente di aggiungere il comportamento di eliminazione a un'associazione.
IsForeignKey Booleano false Se è impostata su True, consente di definire il membro come chiave esterna in un'associazione che rappresenta una relazione di database.
IsUnique Booleano false Se è impostata su True, indica un vincolo di univocità sulla chiave esterna.
OtherKey String ID della classe correlata Consente di definire uno o più membri della classe dell'entità di destinazione come valori delle chiavi sull'altro lato dell'associazione.
ThisKey String ID della classe che contiene la proprietà Consente di definire i membri della classe di questa entità per rappresentare i valori delle chiavi su questo lato dell'associazione.

Per ulteriori informazioni, vedere AssociationAttribute.

Nota

I valori delle proprietà di archiviazione AssociationAttribute e ColumnAttribute rispettano la distinzione tra maiuscole e minuscole. Verificare, ad esempio, che per i valori dell'attributo della proprietà AssociationAttribute.Storage venga usata la stessa combinazione di maiuscole e minuscole adoperata per i nomi di proprietà corrispondenti usati in altri punti del codice. Ciò si applica a tutti i linguaggi di programmazione .NET, anche a quelli che in genere non distinguono tra maiuscole e minuscole, tra cui Visual Basic. Per altre informazioni sulla proprietà di archiviazione, vedere DataAttribute.Storage.

Attributo InheritanceMappingAttribute

Usare questo attributo per eseguire il mapping di una gerarchia di ereditarietà.

La tabella seguente descrive le proprietà di questo attributo.

Proprietà Type Default Descrizione
Code Stringa Nessuno. È necessario specificare un valore. Consente di specificare il valore del codice del discriminatore.
IsDefault Booleano false Se è impostata su True, consente di creare un'istanza di un oggetto di questo tipo quando nessun valore discriminante nell'archivio corrisponde a uno dei valori specificati.
Type Type Nessuno. È necessario specificare un valore. Consente di specificare il tipo della classe nella gerarchia.

Per ulteriori informazioni, vedere InheritanceMappingAttribute.

Attributo FunctionAttribute

Usare questo attributo per definire un metodo che rappresenti una stored procedure o una funzione definita dall'utente nel database.

La tabella seguente descrive le proprietà di questo attributo.

Proprietà Type Default Descrizione
IsComposable Boolean false Se è impostata su false, indica il mapping a una stored procedure. Se è impostata su True, indica il mapping a una funzione definita dall'utente.
Name String La stessa stringa del nome nel database Consente di specificare il nome della stored procedure o della funzione definita dall'utente.

Per ulteriori informazioni, vedere FunctionAttribute.

Attributo ParameterAttribute

Usare questo attributo per eseguire il mapping dei parametri di input ai metodi della stored procedure.

La tabella seguente descrive le proprietà di questo attributo.

Proprietà Type Default Descrizione
DbType Stringa None Consente di specificare il tipo di database.
Name String Stessa stringa del nome di parametro nel database Consente di specificare un nome per il parametro.

Per ulteriori informazioni, vedere ParameterAttribute.

Attributo ResultTypeAttribute

Usare questo attributo per specificare un tipo di risultato.

La tabella seguente descrive le proprietà di questo attributo.

Proprietà Type Default Descrizione
Type Tipo (Nessuno) Usata per i metodi di cui è stato eseguito il mapping a stored procedure che restituiscono IMultipleResults. Consente di dichiarare i mapping dei tipi validi o previsti per la stored procedure.

Per ulteriori informazioni, vedere ResultTypeAttribute.

Attributo DataAttribute

Usare questo attributo per specificare nomi e campi di archiviazione privati.

La tabella seguente descrive le proprietà di questo attributo.

Proprietà Type Default Descrizione
Name Stringa Stessa stringa del nome nel database Consente di specificare il nome della tabella, della colonna e così via.
Storage String Funzioni di accesso pubbliche Consente di specificare il nome del campo di archiviazione sottostante.

Per ulteriori informazioni, vedere DataAttribute.

Vedi anche