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.

Consulte también