Asignación basada en atributos
LINQ to SQL asigna una base de datos de SQL Server a un modelo de objetos de LINQ to SQL aplicando atributos o utilizando un archivo de asignación externo. En este tema se describe el enfoque basado en atributos.
En su forma más elemental, LINQ to SQL asigna una base de datos a un DataContext, una tabla a una clase y las columnas y relaciones a las propiedades de esas clases. También puede utilizar atributos para asignar una jerarquía de herencia en su modelo de objetos. Para obtener más información, veaCómo: Generar el modelo de objetos en Visual Basic o C#.
Normalmente, los desarrolladores que usan Visual Studio realizan la asignación basada en atributos mediante el Object Relational Designer. También puede usar la herramienta de la línea de comandos de SQLMetal o incluir los atributos en el código manualmente. Para obtener más información, veaCómo: Generar el modelo de objetos en Visual Basic o C#.
Nota
También puede realizar la asignación utilizando un archivo XML externo. Para más información, vea Asignación externa.
En las secciones siguientes se describe con más detalle la asignación basada en atributos. Para obtener más información, vea el espacio de nombres System.Data.Linq.Mapping.
Atributo DatabaseAttribute
Utilice este atributo para especificar el nombre predeterminado de la base de datos cuando la conexión no proporciona ningún nombre. Este atributo es opcional, pero, si lo utiliza, debe aplicar la propiedad Name, como se indica en la tabla siguiente.
Propiedad | Tipo | Valor predeterminado | Descripción |
---|---|---|---|
Name | String | Vea Name. | Cuando se usa con su propiedad Name, especifica el nombre de la base de datos. |
Para más información, consulte DatabaseAttribute.
Atributo TableAttribute
Utilice este atributo para designar una clase como una clase de entidad que está asociada a una tabla o vista de base de datos. LINQ to SQL trata las clases que tienen este atributo como clases persistentes. En la tabla siguiente se describe la propiedad Name.
Propiedad | Tipo | Valor predeterminado | Descripción |
---|---|---|---|
Name | String | La misma cadena que el nombre de clase | Designa una clase como una clase de entidad que está asociada a una tabla de base de datos. |
Para más información, consulte TableAttribute.
Atributo ColumnAttribute
Utilice este atributo para designar un miembro de una clase de entidad para que represente una columna de una tabla de base de datos. Este atributo se puede aplicar cualquier campo o propiedad.
Solo los miembros que identifique como columnas se recuperarán y conservarán cuando LINQ to SQL guarde los cambios en la base de datos. Se supone que los miembros que no tienen este atributo no son persistentes y no se envían para operaciones de inserción o actualización.
En la tabla siguiente se describen las propiedades de este atributo.
Propiedad | Tipo | Valor predeterminado | Descripción |
---|---|---|---|
AutoSync | AutoSync | Nunca | Indica a Common Language Runtime (CLR) que recupere el valor después de una operación de inserción o actualización. Opciones: Always, Never, OnUpdate, OnInsert. |
CanBeNull | Boolean | true |
Indica que una columna puede contener valores nulos. |
DbType | String | Tipo de columna de base de datos deducido | Utiliza tipos de base de datos y modificadores para especificar el tipo de la columna de base de datos. |
Expression | String | Vacío | Define una columna calculada en una base de datos. |
IsDbGenerated | Boolean | false |
Indica que una columna contiene valores que la base de datos genera automáticamente. |
IsDiscriminator | Boolean | false |
Indica que la columna contiene un valor de discriminador para una jerarquía de herencia de LINQ to SQL. |
IsPrimaryKey | Boolean | false |
Especifica que este miembro de clase representa una columna que es o forma parte de las claves principales de la tabla. |
IsVersion | Boolean | false |
Identifica el tipo de columna del miembro como una marca de tiempo o número de versión de la base de datos. |
UpdateCheck | UpdateCheck | Always , a menos que IsVersion sea true para un miembro |
Especifica cómo se plantea LINQ to SQL la detección de conflictos de simultaneidad optimista. |
Para más información, consulte ColumnAttribute.
Nota
Los valores de propiedad AssociationAttribute y ColumnAttribute Storage distinguen entre mayúsculas y minúsculas. Por ejemplo, asegúrese de que los valores utilizados en el atributo de la propiedad AssociationAttribute.Storage coinciden con el uso de mayúsculas y minúsculas para los nombres de propiedad correspondientes del resto del código. Esto se aplica a todos los lenguajes de programación de .NET, incluso a los que típicamente no distinguen entre mayúsculas y minúsculas, como Visual Basic. Para obtener más información acerca de la propiedad Storage, vea DataAttribute.Storage.
Atributo AssociationAttribute
Utilice este atributo para designar una propiedad que represente una asociación en la base de datos, como una relación entre clave externa y clave principal. Para obtener más información acerca de las relaciones, consulte Cómo: Asignar relaciones de bases de datos.
En la tabla siguiente se describen las propiedades de este atributo.
Propiedad | Tipo | Valor predeterminado | Descripción |
---|---|---|---|
DeleteOnNull | Boolean | false |
Cuando se coloca en una asociación cuyos miembros de clave externa no aceptan valores Null, elimina el objeto cuando la asociación está establecida en null. |
DeleteRule | String | None | Agrega comportamiento de eliminación a una asociación. |
IsForeignKey | Boolean | false |
Si es verdadero, designa el miembro como la clave externa de una asociación que representa una relación de base de datos. |
IsUnique | Boolean | false |
Si es verdadero, indica una restricción de unicidad en la clave externa. |
OtherKey | String | Identificador de la clase relacionada | Designa uno o más miembros de la clase de entidad de destino como valores de clave en el otro lado de la asociación. |
ThisKey | String | Identificador de la clase contenedora | Designa miembros de esta clase de entidad para que representen los valores de clave en este lado de la asociación. |
Para obtener más información, vea AssociationAttribute.
Nota
Los valores de propiedad AssociationAttribute y ColumnAttribute Storage distinguen entre mayúsculas y minúsculas. Por ejemplo, asegúrese de que los valores utilizados en el atributo de la propiedad AssociationAttribute.Storage coinciden con el uso de mayúsculas y minúsculas para los nombres de propiedad correspondientes del resto del código. Esto se aplica a todos los lenguajes de programación de .NET, incluso a los que típicamente no distinguen entre mayúsculas y minúsculas, como Visual Basic. Para obtener más información acerca de la propiedad Storage, vea DataAttribute.Storage.
Atributo InheritanceMappingAttribute
Utilice este atributo para asignar una jerarquía de herencia.
En la tabla siguiente se describen las propiedades de este atributo.
Propiedad | Tipo | Valor predeterminado | Descripción |
---|---|---|---|
Code | String | Ninguno. El valor debe suministrarse. | Especifica el valor de código del discriminador. |
IsDefault | Boolean | false |
Si es verdadero, crea instancias de un objeto de este tipo cuando ningún valor de discriminador del almacén coincide con ninguno de los valores especificados. |
Type | Tipo | Ninguno. El valor debe suministrarse. | Especifica el tipo de la clase en la jerarquía. |
Para más información, consulte InheritanceMappingAttribute.
Atributo FunctionAttribute
Utilice este atributo para designar un método para representar un procedimiento almacenado o una función definida por el usuario en la base de datos.
En la tabla siguiente se describen las propiedades de este atributo.
Propiedad | Tipo | Valor predeterminado | Descripción |
---|---|---|---|
IsComposable | Boolean | false |
Si es falso, indica la asignación a un procedimiento almacenado. Si es verdadero, indica la asignación a una función definida por el usuario. |
Name | String | La misma cadena que el nombre en la base de datos | Especifica el nombre del procedimiento almacenado o la función definida por el usuario. |
Para más información, consulte FunctionAttribute.
Atributo ParameterAttribute
Utilice este atributo para asignar parámetros de entrada en métodos de procedimiento almacenado.
En la tabla siguiente se describen las propiedades de este atributo.
Propiedad | Tipo | Valor predeterminado | Descripción |
---|---|---|---|
DbType | String | None | Especifica el tipo de base de datos. |
Name | String | La misma cadena que el nombre del parámetro en la base de datos | Especifica un nombre para el parámetro. |
Para obtener más información, vea ParameterAttribute.
Atributo ResultTypeAttribute
Utilice este atributo para especificar un tipo de resultado.
En la tabla siguiente se describen las propiedades de este atributo.
Propiedad | Tipo | Valor predeterminado | Descripción |
---|---|---|---|
Type | Tipo | (Ninguna) | Se utiliza en los métodos asignados a los procedimientos almacenados que devuelven IMultipleResults. Declara las asignaciones de tipos válidas o esperadas para el procedimiento almacenado. |
Para obtener más información, vea ResultTypeAttribute.
Atributo DataAttribute
Utilice este atributo para especificar nombres y campos de almacenamiento privados.
En la tabla siguiente se describen las propiedades de este atributo.
Propiedad | Tipo | Valor predeterminado | Descripción |
---|---|---|---|
Name | String | Igual que el nombre en la base de datos | Especifica el nombre de la tabla, columna, etc. |
Storage | String | Descriptores de acceso públicos | Especifica el nombre del campo de almacenamiento subyacente. |
Para obtener más información, vea DataAttribute.