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).
Nota |
---|
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 |
---|---|---|---|
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 |
---|---|---|---|
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 |
Never |
Indica a Common Language Runtime (CLR) di recuperare il valore dopo un'operazione di inserimento o di aggiornamento. Opzioni: Always, Never, OnUpdate, OnInsert. |
|
Boolean |
true |
Indica che una colonna può contenere valori null. |
|
String |
Tipo di colonna di database dedotto |
Consente di utilizzare tipi di database e modificatori per specificare il tipo di colonna del database. |
|
String |
Vuoto |
Consente di definire una colonna calcolata in un database. |
|
Boolean |
false |
Consente di indicare che una colonna contiene valori generati automaticamente dal database. |
|
Boolean |
false |
Consente di indicare che la colonna contiene un valore discriminante per una gerarchia di ereditarietà di LINQ to SQL. |
|
Boolean |
false |
Consente di specificare che questo membro della classe rappresenta una colonna che corrisponde o fa parte delle chiavi primarie della tabella. |
|
Boolean |
false |
Consente di identificare il tipo di colonna del membro come un timestamp del database o un numero di versione. |
|
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 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 |
---|---|---|---|
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. |
|
String |
Nessuno |
Consente di aggiungere il comportamento di eliminazione a un'associazione. |
|
Boolean |
false |
Se è impostata su True, consente di definire il membro come chiave esterna in un'associazione che rappresenta una relazione di database. |
|
Boolean |
false |
Se è impostata su True, indica un vincolo di univocità sulla chiave esterna. |
|
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. |
|
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.
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 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 |
---|---|---|---|
String |
Nessuno. È necessario specificare un valore. |
Consente di specificare il valore del codice del discriminatore. |
|
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. |
|
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 |
---|---|---|---|
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. |
|
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 |
---|---|---|---|
String |
Nessuno |
Consente di specificare il tipo di database. |
|
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 |
(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 |
---|---|---|---|
String |
Stessa stringa del nome nel database |
Consente di specificare il nome della tabella, della colonna e così via. |
|
Stringa |
Funzioni di accesso pubbliche |
Consente di specificare il nome del campo di archiviazione sottostante. |
Per ulteriori informazioni, vedere DataAttribute.