Partilhar via


Mapeamento Attribute-Based

O LINQ to SQL mapeia um banco de dados do SQL Server para um modelo de objeto LINQ to SQL aplicando atributos ou usando um arquivo de mapeamento externo. Este tópico descreve a abordagem baseada em atributos.

Em sua forma mais elementar, o LINQ to SQL mapeia um banco de dados para um DataContext, uma tabela para uma classe e colunas e relações para propriedades nessas classes. Você também pode usar atributos para mapear uma hierarquia de herança em seu modelo de objeto. Para obter mais informações, consulte Como gerar o modelo de objeto em Visual Basic ou C#.

Os desenvolvedores que usam o Visual Studio normalmente executam o mapeamento baseado em atributos usando o Object Relational Designer. Você também pode usar a ferramenta de linha de comando SQLMetal ou você mesmo pode codificar manualmente os atributos. Para obter mais informações, consulte Como gerar o modelo de objeto em Visual Basic ou C#.

Observação

Você também pode mapear usando um arquivo XML externo. Para obter mais informações, consulte Mapeamento externo.

As seções a seguir descrevem o mapeamento baseado em atributos com mais detalhes. Para obter mais informações, consulte o namespace System.Data.Linq.Mapping.

Atributo DatabaseAttribute

Use esse atributo para especificar o nome padrão do banco de dados quando um nome não for fornecido pela conexão. Esse atributo é opcional, mas se você usá-lo, deverá aplicar a Name propriedade, conforme descrito na tabela a seguir.

Propriedade Tipo Predefinido Descrição
Name Cordão Veja Name Usado com sua Name propriedade, especifica o nome do banco de dados.

Para obter mais informações, consulte DatabaseAttribute.

Atributo TableAttribute

Use esse atributo para designar uma classe como uma classe de entidade associada a uma tabela ou exibição de banco de dados. O LINQ to SQL trata as classes que têm esse atributo como classes persistentes. A tabela a seguir descreve a Name propriedade.

Propriedade Tipo Predefinido Descrição
Name Cordão Mesma cadeia de caracteres que o nome da classe Designa uma classe como uma classe de entidade associada a uma tabela de banco de dados.

Para obter mais informações, consulte TableAttribute.

Atributo ColunaAtributo

Use esse atributo para designar um membro de uma classe de entidade para representar uma coluna em uma tabela de banco de dados. Você pode aplicar esse atributo a qualquer campo ou propriedade.

Somente os membros identificados como colunas são recuperados e persistem quando o LINQ to SQL salva as alterações no banco de dados. Os membros sem esse atributo são considerados não persistentes e não são enviados para inserções ou atualizações.

A tabela a seguir descreve as propriedades desse atributo.

Propriedade Tipo Predefinido Descrição
AutoSync Sincronização Automática Nunca Instrui o Common Language Runtime (CLR) a recuperar o valor após uma operação de inserção ou atualização.

Opções: Sempre, Nunca, Atualizar, Inserir.
CanBeNull Booleano true Indica que uma coluna pode conter valores nulos.
DbType Cordão Tipo de coluna de banco de dados inferido Usa tipos de banco de dados e modificadores para especificar o tipo da coluna do banco de dados.
Expression Cordão Vazio Define uma coluna computada em um banco de dados.
IsDbGenerated Booleano false Indica que uma coluna contém valores que o banco de dados gera automaticamente.
IsDiscriminator Booleano false Indica que a coluna contém um valor discriminador para uma hierarquia de herança LINQ to SQL.
IsPrimaryKey Booleano false Especifica que esse membro da classe representa uma coluna que é ou faz parte das chaves primárias da tabela.
IsVersion Booleano false Identifica o tipo de coluna do membro como timestamp ou número de versão de base de dados.
UpdateCheck UpdateCheck Always, a menos que IsVersion seja true para um membro Especifica como o LINQ to SQL aborda a deteção de conflitos de concorrência otimista.

Para obter mais informações, consulte ColumnAttribute.

Observação

Os valores das propriedades AssociationAttribute e ColumnAttribute Storage diferenciam maiúsculas de minúsculas. Por exemplo, certifique-se de que os valores usados no atributo para a propriedade AssociationAttribute.Storage correspondam ao caso dos nomes de propriedade correspondentes usados em outro lugar no código. Isso se aplica a todas as linguagens de programação .NET, mesmo aquelas que normalmente não diferenciam maiúsculas de minúsculas, incluindo o Visual Basic. Para obter mais informações sobre a propriedade Storage, consulte DataAttribute.Storage.

Atributo de Associação

Use esse atributo para designar uma propriedade para representar uma associação no banco de dados, como uma chave estrangeira para a relação de chave primária. Para obter mais informações sobre relações, consulte Como mapear relações de banco de dados.

A tabela a seguir descreve as propriedades desse atributo.

Propriedade Tipo Predefinido Descrição
DeleteOnNull Booleano false Quando colocado em uma associação cujos membros de chave estrangeira são todos não anuláveis, exclui o objeto quando a associação é definida como nula.
DeleteRule Cordão Nenhum Adiciona comportamento de exclusão a uma associação.
IsForeignKey Booleano false Se verdadeiro, designa o membro como a chave estrangeira em uma associação que representa uma relação de banco de dados.
IsUnique Booleano false Se verdadeiro, indica uma restrição de exclusividade na chave estrangeira.
OtherKey Cordão ID da classe relacionada Designa um ou mais membros da classe de entidade de destino como valores essenciais na outra parte da associação.
ThisKey Cordão ID da classe que contém Designa membros dessa classe de entidade para representar os valores-chave deste lado da associação.

Para obter mais informações, consulte AssociationAttribute.

Observação

Os valores das propriedades AssociationAttribute e ColumnAttribute Storage diferenciam maiúsculas de minúsculas. Por exemplo, certifique-se de que os valores usados no atributo para a propriedade AssociationAttribute.Storage correspondam ao caso dos nomes de propriedade correspondentes usados em outro lugar no código. Isso se aplica a todas as linguagens de programação .NET, mesmo aquelas que normalmente não diferenciam maiúsculas de minúsculas, incluindo o Visual Basic. Para obter mais informações sobre a propriedade Storage, consulte DataAttribute.Storage.

Atributo "InheritanceMappingAttribute"

Use esse atributo para mapear uma hierarquia de herança.

A tabela a seguir descreve as propriedades desse atributo.

Propriedade Tipo Predefinido Descrição
Code Cordão Nenhum. O valor deve ser fornecido. Especifica o valor do código do discriminador.
IsDefault Booleano false Se true, instancia um objeto desse tipo quando nenhum valor discriminador no repositório corresponde a qualquer um dos valores especificados.
Type Tipo Nenhum. O valor deve ser fornecido. Especifica o tipo da classe na hierarquia.

Para obter mais informações, consulte InheritanceMappingAttribute.

Atributo de Função

Use esse atributo para designar um método como representando um procedimento armazenado ou uma função definida pelo usuário no banco de dados.

A tabela a seguir descreve as propriedades desse atributo.

Propriedade Tipo Predefinido Descrição
IsComposable Booleano false Se for falso, indica mapeamento para um procedimento armazenado. Se true, indica o mapeamento para uma função definida pelo usuário.
Name Cordão Mesma cadeia de caracteres que o nome no banco de dados Especifica o nome do procedimento armazenado ou da função definida pelo usuário.

Para obter mais informações, consulte FunctionAttribute.

Atributo "ParameterAttribute"

Use esse atributo para mapear parâmetros de entrada em métodos de procedimento armazenado.

A tabela a seguir descreve as propriedades desse atributo.

Propriedade Tipo Predefinido Descrição
DbType Cordão Nenhum Especifica o tipo de banco de dados.
Name Cordão Mesma cadeia de caracteres que o nome do parâmetro no banco de dados Especifica um nome para o parâmetro.

Para obter mais informações, consulte ParameterAttribute.

Atributo "ResultTypeAttribute"

Use este atributo para especificar um tipo de resultado.

A tabela a seguir descreve as propriedades desse atributo.

Propriedade Tipo Predefinido Descrição
Type Tipo (Nenhum) Usado em métodos mapeados para procedimentos armazenados que retornam IMultipleResults. Declara os mapeamentos de tipo válidos ou esperados para o procedimento armazenado.

Para obter mais informações, consulte ResultTypeAttribute.

Atributo DataAttribute

Use esse atributo para especificar nomes e campos de armazenamento privado.

A tabela a seguir descreve as propriedades desse atributo.

Propriedade Tipo Predefinido Descrição
Name Cordão O mesmo que nome no banco de dados Especifica o nome da tabela, coluna e assim por diante.
Storage Cordão Acessores públicos Especifica o nome do campo de armazenamento subjacente.

Para obter mais informações, consulte DataAttribute.

Ver também