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.