Condividi tramite


Attribute-Based mapping

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

Nella forma più elementare, LINQ to SQL esegue il mapping di un database a un oggetto DataContext, una tabella a una classe e le colonne e le relazioni alle proprietà di tali classi. È anche possibile usare gli 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 Progettazione relazionale oggetti. È possibile usare anche lo strumento da riga di comando SQLMetal oppure scrivere gli attributi manualmente. Per altre informazioni, vedere Procedura: Generare il modello a oggetti in Visual Basic o C#.

Annotazioni

È anche possibile eseguire il mapping usando un file XML esterno. Per altre informazioni, vedere Mapping esterno.

Le sezioni seguenti descrivono il mapping basato su attributi in modo più dettagliato. Per ulteriori informazioni, consultare lo spazio dei nomi System.Data.Linq.Mapping.

Attributo 'DatabaseAttribute'

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

Proprietà TIPO Predefinito Descrizione
Name Stringa Fare riferimento a Name Utilizzato con la relativa Name proprietà, specifica il nome del database.

Per altre informazioni, vedere DatabaseAttribute.

Attributo Tabella

Usare questo attributo per designare una classe come classe di entità associata a una tabella o a una vista di database. LINQ to SQL considera le classi con questo attributo come classi persistenti. Nella tabella seguente viene descritta la Name proprietà .

Proprietà TIPO Predefinito Descrizione
Name Stringa Stessa stringa del nome della classe Definisce una classe come classe di entità associata a una tabella di database.

Per altre informazioni, vedere TableAttribute.

Attributo ColumnAttribute

Utilizzare questo attributo per designare un membro di una classe di 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 salvati in modo permanente quando LINQ to SQL salva le modifiche nel database. I membri senza questo attributo vengono considerati non persistenti e non vengono inviati per inserimenti o aggiornamenti.

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

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

Opzioni: Always, Never, OnUpdate, OnInsert.
CanBeNull Booleano true Indica che una colonna può contenere valori Null.
DbType Stringa Tipo di colonna del database dedotto Usa tipi di database e modificatori per specificare il tipo della colonna di database.
Expression Stringa Vuoto Definisce una colonna calcolata in un database.
IsDbGenerated Booleano false Indica che una colonna contiene valori generati automaticamente dal database.
IsDiscriminator Booleano false Indica che la colonna contiene un valore discriminatorio per una gerarchia di ereditarietà LINQ to SQL.
IsPrimaryKey Booleano false Specifica che questo membro della classe rappresenta una colonna che fa parte o fa parte delle chiavi primarie della tabella.
IsVersion Booleano false Identifica il tipo di colonna del membro come marca temporale del database o come numero di versione.
UpdateCheck UpdateCheck Always, a meno che non IsVersion sia true per un membro Specifica il modo in cui LINQ to SQL si avvicina al rilevamento dei conflitti di concorrenza ottimistica.

Per altre informazioni, vedere ColumnAttribute.

Annotazioni

I valori delle proprietà Storage di AssociationAttribute e ColumnAttribute fanno distinzione tra maiuscole e minuscole. Ad esempio, assicurarsi che i valori usati nell'attributo per la proprietà AssociationAttribute.Storage corrispondano al caso per i nomi di proprietà corrispondenti usati altrove nel codice. Questo vale per tutti i linguaggi di programmazione .NET, anche quelli che in genere non fanno distinzione tra maiuscole e minuscole, incluso Visual Basic. Per altre informazioni sulla proprietà Storage, vedere DataAttribute.Storage.

Attributo AssociationAttribute Attribute

Utilizzare questo attributo per designare una proprietà per rappresentare un'associazione nel database, ad esempio una chiave esterna alla relazione di chiave primaria. Per altre informazioni sulle relazioni, vedere Procedura: Eseguire il mapping delle relazioni di database.

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

Proprietà TIPO Predefinito Descrizione
DeleteOnNull Booleano false Quando è posizionato su un'associazione i cui membri di chiave esterna sono tutti non annullabili, elimina l'oggetto quando l'associazione è impostata su null.
DeleteRule Stringa Nessuno Aggiunge la funzione di eliminazione a un'associazione.
IsForeignKey Booleano false Se vero, designa il membro come chiave esterna in un'associazione che rappresenta una relazione di database.
IsUnique Booleano false Se vero, indica un vincolo di univocità sulla chiave esterna.
OtherKey Stringa ID della classe correlata Definisce uno o più membri della classe di entità target come valori chiave nella parte opposta dell'associazione.
ThisKey Stringa ID della classe contenitore Definisce i membri di questa classe di entità per rappresentare i valori di chiave su questo lato dell'associazione.

Per altre informazioni, vedere AssociationAttribute.

Annotazioni

I valori delle proprietà Storage di AssociationAttribute e ColumnAttribute fanno distinzione tra maiuscole e minuscole. Ad esempio, assicurarsi che i valori usati nell'attributo per la proprietà AssociationAttribute.Storage corrispondano al caso per i nomi di proprietà corrispondenti usati altrove nel codice. Questo vale per tutti i linguaggi di programmazione .NET, anche quelli che in genere non fanno distinzione tra maiuscole e minuscole, incluso Visual Basic. Per altre informazioni sulla proprietà Storage, vedere DataAttribute.Storage.

Attributo InheritanceMappingAttribute

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

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

Proprietà TIPO Predefinito Descrizione
Code Stringa Nessuno. È necessario specificare il valore. Specifica il valore del codice del discriminatore.
IsDefault Booleano false Se true, crea un'istanza di un oggetto di questo tipo quando nessun valore discriminatorio nell'archivio corrisponde a uno dei valori specificati.
Type TIPO Nessuno. È necessario specificare il valore. Specifica il tipo della classe nella gerarchia.

Per altre informazioni, vedere InheritanceMappingAttribute.

Attributo FunctionAttribute

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

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

Proprietà TIPO Predefinito Descrizione
IsComposable Booleano false Se falso, indica il mapping a una stored procedure. Se vero, indica il mappaggio a una funzione definita dall'utente.
Name Stringa Stessa stringa del nome nel database Specifica il nome della procedura memorizzata o della funzione definita dall'utente.

Per altre informazioni, vedere FunctionAttribute.

Attributo ParameterAttribute

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

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

Proprietà TIPO Predefinito Descrizione
DbType Stringa Nessuno Specifica il tipo di database.
Name Stringa Stessa stringa del nome del parametro nel database Specifica un nome per il parametro .

Per altre informazioni, vedere ParameterAttribute.

Attributo ResultTypeAttribute

Utilizzare questo attributo per specificare un tipo di risultato.

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

Proprietà TIPO Predefinito Descrizione
Type TIPO (Nessuno) Utilizzato nei metodi mappati alle stored procedure che restituiscono IMultipleResults. Dichiara i mapping di tipi validi o attesi per la stored procedure (procedura memorizzata).

Per altre informazioni, vedere ResultTypeAttribute.

Attributo DataAttribute

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

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

Proprietà TIPO Predefinito Descrizione
Name Stringa Uguale al nome nel database Specifica il nome della tabella, della colonna e così via.
Storage Stringa Metodi di accesso pubblici Specifica il nome del campo di archiviazione sottostante.

Per altre informazioni, vedere DataAttribute.

Vedere anche