Mapping basato su attributo (LINQ to SQL)

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 utilizzando 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 utilizzare attributi per eseguire il mapping di una gerarchia di ereditarietà nel modello a oggetti. Per ulteriori informazioni, vedere Procedura: generare il modello a oggetti in Visual Basic o C# (LINQ to SQL).

Gli sviluppatori che utilizzano Visual Studio eseguono in genere il mapping basato sugli attributi tramite Object Relational Designer. Per ulteriori informazioni, vedere Progettazione relazionale oggetti e Progettazione relazionale oggetti e Progettazione relazionale oggetti. È inoltre possibile utilizzare lo strumento della riga di comando SQLMetal o codificare manualmente gli attributi. Per ulteriori informazioni, vedere Procedura: generare il modello a oggetti in Visual Basic o C# (LINQ to SQL).

NotaNota

Il mapping può inoltre essere eseguito utilizzando un file XML esterno.Per ulteriori informazioni, vedere Riferimento al mapping esterno (LINQ to SQL).

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

Attributo DatabaseAttribute

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

Proprietà

Tipo

Valore predefinito

Descrizione

Name

String

Vedere Name

Utilizzato con la relativa proprietà Name, consente di specificare il nome del database.

Per ulteriori informazioni, vedere DatabaseAttribute.

Attributo TableAttribute

Utilizzare 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. Nella tabella seguente viene descritta la proprietà Name.

Proprietà

Tipo

Valore predefinito

Descrizione

Name

String

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

Utilizzare 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.

Nella tabella seguente sono descritte le proprietà di questo attributo.

Proprietà

Tipo

Valore predefinito

Descrizione

AutoSync

AutoSync

Never

Indica a Common Language Runtime (CLR) di recuperare il valore dopo un'operazione di inserimento o di aggiornamento.

Opzioni: Always, Never, OnUpdate, OnInsert.

CanBeNull

Boolean

true

Indica che una colonna può contenere valori null.

DbType

String

Tipo di colonna di database dedotto

Consente di utilizzare 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

Boolean

false

Consente di indicare che una colonna contiene valori generati automaticamente dal database.

IsDiscriminator

Boolean

false

Consente di indicare che la colonna contiene un valore discriminante per una gerarchia di ereditarietà di LINQ to SQL.

IsPrimaryKey

Boolean

false

Consente di specificare che questo membro della classe rappresenta una colonna che corrisponde o fa parte delle chiavi primarie della tabella.

IsVersion

Boolean

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.

NotaNota

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 utilizzata la stessa combinazione di maiuscole e minuscole adoperata per i nomi di proprietà corrispondenti utilizzati 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 ulteriori informazioni sulla proprietà di archiviazione, vedere DataAttribute.Storage.

Attributo AssociationAttribute

Utilizzare questo attributo per definire una proprietà che rappresenti un'associazione nel database, ad esempio una relazione da chiave esterna a chiave primaria. Per ulteriori informazioni sulle relazioni, vedere Procedura: mappare le relazioni di database (LINQ to SQL).

Nella tabella seguente sono descritte le proprietà di questo attributo.

Proprietà

Tipo

Valore predefinito

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

Nessuno

Consente di aggiungere il comportamento di eliminazione a un'associazione.

IsForeignKey

Boolean

false

Se è impostata su True, consente di definire il membro come chiave esterna in un'associazione che rappresenta una relazione di database.

IsUnique

Boolean

false

Se è impostata su True, indica un vincolo di univocità sulla chiave esterna.

OtherKey

Stringa

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

Stringa

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.

NotaNota

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 utilizzata la stessa combinazione di maiuscole e minuscole adoperata per i nomi di proprietà corrispondenti utilizzati 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 ulteriori informazioni sulla proprietà di archiviazione, vedere DataAttribute.Storage.

Attributo InheritanceMappingAttribute

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

Nella tabella seguente sono descritte le proprietà di questo attributo.

Proprietà

Tipo

Valore predefinito

Descrizione

Code

String

Nessuno. È necessario specificare un valore.

Consente di specificare il valore del codice del discriminatore.

IsDefault

Boolean

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

Tipo

Nessuno. È necessario specificare il valore.

Consente di specificare il tipo della classe nella gerarchia.

Per ulteriori informazioni, vedere InheritanceMappingAttribute.

Attributo FunctionAttribute

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

Nella tabella seguente sono descritte le proprietà di questo attributo.

Proprietà

Tipo

Valore predefinito

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

Stringa

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

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

Nella tabella seguente sono descritte le proprietà di questo attributo.

Proprietà

Tipo

Valore predefinito

Descrizione

DbType

String

Nessuno

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

Utilizzare questo attributo per specificare un tipo di risultato.

Nella tabella seguente sono descritte le proprietà di questo attributo.

Proprietà

Tipo

Valore predefinito

Descrizione

Type

Type

(Nessuno)

Utilizzata 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

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

Nella tabella seguente sono descritte le proprietà di questo attributo.

Proprietà

Tipo

Valore predefinito

Descrizione

Name

String

Stessa stringa del nome nel database

Consente di specificare il nome della tabella, della colonna e così via.

Storage

Stringa

Funzioni di accesso pubbliche

Consente di specificare il nome del campo di archiviazione sottostante.

Per ulteriori informazioni, vedere DataAttribute.

Vedere anche

Altre risorse

Riferimento (LINQ to SQL)