Mapping basato su attributiAttribute-Based Mapping

LINQ to SQLLINQ to SQL esegue il mapping di un database di SQL Server a un LINQ to SQLLINQ to SQL modello a oggetti applicando attributi o usando un file di mapping esterno. maps a SQL Server database to a LINQ to SQLLINQ to SQL object model by either applying attributes or by using an external mapping file. In questo argomento viene descritto l'approccio basato sugli attributi.This topic outlines the attribute-based approach.

Nella forma più elementare, in LINQ to SQLLINQ 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.In its most elementary form, LINQ to SQLLINQ to SQL maps a database to a DataContext, a table to a class, and columns and relationships to properties on those classes. È anche possibile usare attributi per eseguire il mapping di una gerarchia di ereditarietà nel modello a oggetti.You can also use attributes to map an inheritance hierarchy in your object model. Per ulteriori informazioni, vedere procedura: generare il modello a oggetti in Visual Basic o c#.For more information, see How to: Generate the Object Model in Visual Basic or C#.

Gli sviluppatori che usano Visual Studio in genere eseguono il mapping basato sugli attributi tramite il Object Relational DesignerObject Relational Designer.Developers using Visual Studio typically perform attribute-based mapping by using the Object Relational DesignerObject Relational Designer. È anche possibile usare lo strumento da riga di comando SQLMetal o codificare gli attributi manualmente.You can also use the SQLMetal command-line tool, or you can hand-code the attributes yourself. Per ulteriori informazioni, vedere procedura: generare il modello a oggetti in Visual Basic o c#.For more information, see How to: Generate the Object Model in Visual Basic or C#.

Nota

Il mapping può inoltre essere eseguito usando un file XML esterno.You can also map by using an external XML file. Per ulteriori informazioni, vedere Mapping esterno.For more information, see External Mapping.

Nelle sezioni seguenti viene descritto in dettaglio il mapping basato sugli attributi.The following sections describe attribute-based mapping in more detail. Per altre informazioni, vedere lo spazio dei nomi System.Data.Linq.Mapping.For more information, see the System.Data.Linq.Mapping namespace.

Attributo DatabaseAttributeDatabaseAttribute Attribute

Usare questo attributo per specificare il nome predefinito del database quando non viene fornito un nome dalla connessione.Use this attribute to specify the default name of the database when a name is not supplied by the connection. Questo attributo è facoltativo, ma se viene usato è necessario applicare la proprietà Name, come descritto nella tabella seguente.This attribute is optional, but if you use it, you must apply the Name property, as described in the following table.

ProprietàProperty TipoType DefaultDefault DescrizioneDescription
Name StringString Vedere NameSee Name Usato con la relativa proprietà Name, consente di specificare il nome del database.Used with its Name property, specifies the name of the database.

Per altre informazioni, vedere DatabaseAttribute.For more information, see DatabaseAttribute.

Attributo TableAttributeTableAttribute Attribute

Usare questo attributo per definire una classe come classe dell'entità associata a una visualizzazione o tabella di database.Use this attribute to designate a class as an entity class that is associated with a database table or view. In LINQ to SQLLINQ to SQL le classi con questo attributo vengono gestite come classi persistenti.LINQ to SQLLINQ to SQL treats classes that have this attribute as persistent classes. La tabella seguente descrive la proprietà Name.The following table describes the Name property.

ProprietàProperty TipoType DefaultDefault DescrizioneDescription
Name StringString Stessa stringa del nome della classeSame string as class name Consente di definire una classe come classe dell'entità associata a una tabella di database.Designates a class as an entity class associated with a database table.

Per altre informazioni, vedere TableAttribute.For more information, see TableAttribute.

Attributo ColumnAttributeColumnAttribute Attribute

Usare questo attributo per definire un membro di una classe dell'entità per rappresentare una colonna in una tabella di database.Use this attribute to designate a member of an entity class to represent a column in a database table. È possibile applicare questo attributo a qualsiasi campo o proprietà.You can apply this attribute to any field or property.

Solo i membri identificati come colonne vengono recuperati e resi persistenti quando le modifiche al database vengono salvate da LINQ to SQLLINQ to SQL.Only those members you identify as columns are retrieved and persisted when LINQ to SQLLINQ to SQL saves changes to the database. I membri privi di questo attributo vengono considerati non persistenti e non vengono inviati per inserimenti o aggiornamenti.Members without this attribute are assumed to be non-persistent and are not submitted for inserts or updates.

La tabella seguente descrive le proprietà di questo attributo.The following table describes properties of this attribute.

ProprietàProperty TipoType DefaultDefault DescrizioneDescription
AutoSync AutoSyncAutoSync NeverNever Indica a Common Language Runtime (CLR) di recuperare il valore dopo un'operazione di inserimento o di aggiornamento.Instructs the common language runtime (CLR) to retrieve the value after an insert or update operation.

Opzioni: Always, Never, OnUpdate, OnInsert.Options: Always, Never, OnUpdate, OnInsert.
CanBeNull BooleanBoolean true Indica che una colonna può contenere valori null.Indicates that a column can contain null values.
DbType StringString Tipo di colonna di database dedottoInferred database column type Consente di usare tipi di database e modificatori per specificare il tipo di colonna del database.Uses database types and modifiers to specify the type of the database column.
Expression StringString EmptyEmpty Consente di definire una colonna calcolata in un database.Defines a computed column in a database.
IsDbGenerated BooleanBoolean false Consente di indicare che una colonna contiene valori generati automaticamente dal database.Indicates that a column contains values that the database auto-generates.
IsDiscriminator BooleanBoolean false Consente di indicare che la colonna contiene un valore discriminante per una gerarchia di ereditarietà di LINQ to SQLLINQ to SQL.Indicates that the column contains a discriminator value for a LINQ to SQLLINQ to SQL inheritance hierarchy.
IsPrimaryKey BooleanBoolean false Consente di specificare che questo membro della classe rappresenta una colonna che corrisponde o fa parte delle chiavi primarie della tabella.Specifies that this class member represents a column that is or is part of the primary keys of the table.
IsVersion BooleanBoolean false Consente di identificare il tipo di colonna del membro come un timestamp del database o un numero di versione.Identifies the column type of the member as a database timestamp or version number.
UpdateCheck UpdateCheckUpdateCheck Always, a meno che, per un membro, IsVersion sia trueAlways, unless IsVersion is true for a member Consente di specificare l'approccio adottato da LINQ to SQLLINQ to SQL per il rilevamento dei conflitti di concorrenza ottimistici.Specifies how LINQ to SQLLINQ to SQL approaches the detection of optimistic concurrency conflicts.

Per altre informazioni, vedere ColumnAttribute.For more information, see ColumnAttribute.

Nota

I valori delle proprietà di archiviazione AssociationAttribute e ColumnAttribute rispettano la distinzione tra maiuscole e minuscole.AssociationAttribute and ColumnAttribute Storage property values are case sensitive. 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.For example, ensure that values used in the attribute for the AssociationAttribute.Storage property match the case for the corresponding property names used elsewhere in the code. Questo vale per tutti i linguaggi di programmazione .NET, anche quelli che non sono in genere tra maiuscole e minuscole, tra cui Visual Basic.This applies to all .NET programming languages, even those which are not typically case sensitive, including Visual Basic. Per altre informazioni sulla proprietà di archiviazione, vedere DataAttribute.Storage.For more information about the Storage property, see DataAttribute.Storage.

Attributo AssociationAttributeAssociationAttribute Attribute

Usare questo attributo per definire una proprietà che rappresenti un'associazione nel database, ad esempio una relazione da chiave esterna a chiave primaria.Use this attribute to designate a property to represent an association in the database, such as a foreign key to primary key relationship. Per ulteriori informazioni sulle relazioni, vedere procedura: mappare le relazioni di Database.For more information about relationships, see How to: Map Database Relationships.

La tabella seguente descrive le proprietà di questo attributo.The following table describes properties of this attribute.

ProprietàProperty TipoType DefaultDefault DescrizioneDescription
DeleteOnNull BooleanBoolean 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.When placed on an association whose foreign key members are all non-nullable, deletes the object when the association is set to null.
DeleteRule StringString NoneNone Consente di aggiungere il comportamento di eliminazione a un'associazione.Adds delete behavior to an association.
IsForeignKey BooleanBoolean false Se è impostata su True, consente di definire il membro come chiave esterna in un'associazione che rappresenta una relazione di database.If true, designates the member as the foreign key in an association representing a database relationship.
IsUnique BooleanBoolean false Se è impostata su True, indica un vincolo di univocità sulla chiave esterna.If true, indicates a uniqueness constraint on the foreign key.
OtherKey StringString ID della classe correlataID of the related class Consente di definire uno o più membri della classe dell'entità di destinazione come valori delle chiavi sull'altro lato dell'associazione.Designates one or more members of the target entity class as key values on the other side of the association.
ThisKey StringString ID della classe che contiene la proprietàID of the containing class Consente di definire i membri della classe di questa entità per rappresentare i valori delle chiavi su questo lato dell'associazione.Designates members of this entity class to represent the key values on this side of the association.

Per altre informazioni, vedere AssociationAttribute.For more information, see AssociationAttribute.

Nota

I valori delle proprietà di archiviazione AssociationAttribute e ColumnAttribute rispettano la distinzione tra maiuscole e minuscole.AssociationAttribute and ColumnAttribute Storage property values are case sensitive. 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.For example, ensure that values used in the attribute for the AssociationAttribute.Storage property match the case for the corresponding property names used elsewhere in the code. Questo vale per tutti i linguaggi di programmazione .NET, anche quelli che non sono in genere tra maiuscole e minuscole, tra cui Visual Basic.This applies to all .NET programming languages, even those which are not typically case sensitive, including Visual Basic. Per altre informazioni sulla proprietà di archiviazione, vedere DataAttribute.Storage.For more information about the Storage property, see DataAttribute.Storage.

Attributo InheritanceMappingAttributeInheritanceMappingAttribute Attribute

Usare questo attributo per eseguire il mapping di una gerarchia di ereditarietà.Use this attribute to map an inheritance hierarchy.

La tabella seguente descrive le proprietà di questo attributo.The following table describes properties of this attribute.

ProprietàProperty TipoType DefaultDefault DescrizioneDescription
Code StringString Nessuno.None. È necessario specificare un valore.Value must be supplied. Consente di specificare il valore del codice del discriminatore.Specifies the code value of the discriminator.
IsDefault BooleanBoolean 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.If true, instantiates an object of this type when no discriminator value in the store matches any one of the specified values.
Type TipoType Nessuno.None. È necessario specificare un valore.Value must be supplied. Consente di specificare il tipo della classe nella gerarchia.Specifies the type of the class in the hierarchy.

Per altre informazioni, vedere InheritanceMappingAttribute.For more information, see InheritanceMappingAttribute.

Attributo FunctionAttribute FunctionAttribute Attribute

Usare questo attributo per definire un metodo che rappresenti una stored procedure o una funzione definita dall'utente nel database.Use this attribute to designate a method as representing a stored procedure or user-defined function in the database.

La tabella seguente descrive le proprietà di questo attributo.The following table describes the properties of this attribute.

ProprietàProperty TipoType DefaultDefault DescrizioneDescription
IsComposable BooleanBoolean false Se è impostata su false, indica il mapping a una stored procedure.If false, indicates mapping to a stored procedure. Se è impostata su True, indica il mapping a una funzione definita dall'utente.If true, indicates mapping to a user-defined function.
Name StringString La stessa stringa del nome nel databaseSame string as name in the database Consente di specificare il nome della stored procedure o della funzione definita dall'utente.Specifies the name of the stored procedure or user-defined function.

Per altre informazioni, vedere FunctionAttribute.For more information, see FunctionAttribute.

Attributo ParameterAttributeParameterAttribute Attribute

Usare questo attributo per eseguire il mapping dei parametri di input ai metodi della stored procedure.Use this attribute to map input parameters on stored procedure methods.

La tabella seguente descrive le proprietà di questo attributo.The following table describes properties of this attribute.

ProprietàProperty TipoType DefaultDefault DescrizioneDescription
DbType StringString NoneNone Consente di specificare il tipo di database.Specifies database type.
Name StringString Stessa stringa del nome di parametro nel databaseSame string as parameter name in database Consente di specificare un nome per il parametro.Specifies a name for the parameter.

Per altre informazioni, vedere ParameterAttribute.For more information, see ParameterAttribute.

Attributo ResultTypeAttributeResultTypeAttribute Attribute

Usare questo attributo per specificare un tipo di risultato.Use this attribute to specify a result type.

La tabella seguente descrive le proprietà di questo attributo.The following table describes properties of this attribute.

ProprietàProperty TipoType DefaultDefault DescrizioneDescription
Type TipoType (Nessuno)(None) Usata per i metodi di cui è stato eseguito il mapping a stored procedure che restituiscono IMultipleResults.Used on methods mapped to stored procedures that return IMultipleResults. Consente di dichiarare i mapping dei tipi validi o previsti per la stored procedure.Declares the valid or expected type mappings for the stored procedure.

Per altre informazioni, vedere ResultTypeAttribute.For more information, see ResultTypeAttribute.

Attributo DataAttributeDataAttribute Attribute

Usare questo attributo per specificare nomi e campi di archiviazione privati.Use this attribute to specify names and private storage fields.

La tabella seguente descrive le proprietà di questo attributo.The following table describes properties of this attribute.

ProprietàProperty TipoType DefaultDefault DescrizioneDescription
Name StringString Stessa stringa del nome nel databaseSame as name in database Consente di specificare il nome della tabella, della colonna e così via.Specifies the name of the table, column, and so on.
Storage StringString Funzioni di accesso pubblichePublic accessors Consente di specificare il nome del campo di archiviazione sottostante.Specifies the name of the underlying storage field.

Per altre informazioni, vedere DataAttribute.For more information, see DataAttribute.

Vedere ancheSee Also

RiferimentoReference