Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.