Mapeamento baseado em atributos
O LINQ to SQL mapeia um banco de dados do SQL Server para um modelo de objeto do 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 no 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 atributo usando o Object Relational Designer. Você também pode usar a ferramenta de linha de comando SQLMetal ou codificar manualmente os atributos por conta própria. 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 saber mais, confira Mapeamento externo.
As seguintes seções descrevem o mapeamento baseado em atributos com mais detalhes. Para obter mais informações, consulte o namespace de System.Data.Linq.Mapping.
Atributo DatabaseAttribute
Use esse atributo para especificar o nome padrão do banco de dados quando um nome não é fornecido pela conexão. Esse atributo é opcional, mas, se você usá-lo, deverá aplicar a propriedade Name, como descrito na tabela a seguir.
Propriedade | Type | Padrão | Descrição |
---|---|---|---|
Name | String | Veja Name | Usado com sua propriedade Name, 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 que está associada com uma tabela de banco de dados ou uma exibição. O LINQ to SQL trata as classes que têm esse atributo como classes persistentes. A tabela a seguir descreve a propriedade Name.
Propriedade | Type | Padrão | Descrição |
---|---|---|---|
Name | String | 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 ColumnAttribute
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 este atributo a qualquer campo ou propriedade.
Somente os membros que você identifica como colunas são recuperados e persistidos quando o LINQ to SQL salva as alterações para o banco de dados. Os membros sem este 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 | Type | Padrão | Descrição |
---|---|---|---|
AutoSync | AutoSync | Nunca | Instrui o CLR (Common Language Runtime) para recuperar o valor depois de uma operação de inserção ou atualização. Opções: Always, Never, OnUpdate, OnInsert. |
CanBeNull | Booliano | true |
Indica que uma coluna pode conter valores nulos. |
DbType | String | Tipo de coluna do banco de dados inferido | Usa tipos de banco de dados e modificadores para especificar o tipo de coluna de banco de dados. |
Expression | String | Vazio | Define uma coluna computada em um banco de dados. |
IsDbGenerated | Booliano | false |
Indica que uma coluna contém os valores que o banco de dados gera automaticamente. |
IsDiscriminator | Booliano | false |
Indica que a coluna contém um valor de discriminador para uma hierarquia de herança do LINQ to SQL. |
IsPrimaryKey | Booliano | false |
Especifica que este membro da classe representa uma coluna que é ou faz parte das chaves primárias da tabela. |
IsVersion | Booliano | false |
Identifica o tipo de coluna do membro como um carimbo de data/hora ou número de versão do banco de dados. |
UpdateCheck | UpdateCheck | Always , a menos que IsVersion seja true para um membro |
Especifica como o LINQ to SQL aborda a detecção de conflitos de simultaneidade otimista. |
Para obter mais informações, consulte ColumnAttribute.
Observação
Os valores de propriedade de armazenamento AssociationAttribute e ColumnAttribute diferenciam maiúsculas de minúsculas. Por exemplo, verifique se os valores usados no atributo para a propriedade AssociationAttribute.Storage coincidem maiúsculas e minúsculas para os nomes de propriedades correspondentes usados em outro lugar no código. Isso se aplica a todas as linguagens de programação do .NET, mesmo as 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 AssociationAttribute
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 saber mais, veja Como: mapear relações de bancos de dados.
A tabela a seguir descreve as propriedades desse atributo.
Propriedade | Type | Padrão | Descrição |
---|---|---|---|
DeleteOnNull | Boolean | 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 nulo. |
DeleteRule | String | Nenhum | Adiciona o comportamento de exclusão para uma associação. |
IsForeignKey | Booliano | false |
Se for verdadeiro, designa o membro como a chave estrangeira em uma associação que representa uma relação de banco de dados. |
IsUnique | Booliano | false |
Se for verdadeiro, indica uma restrição de exclusividade na chave estrangeira. |
OtherKey | String | Identificação da classe relacionada | Designa um ou mais membros da classe de entidade de destino como valores chave no outro lado da associação. |
ThisKey | String | Identificação da classe recipiente | Designa os membros dessa classe de entidade para representar os valores chave nesse lado da associação. |
Para obter mais informações, consulte AssociationAttribute.
Observação
Os valores de propriedade de armazenamento AssociationAttribute e ColumnAttribute diferenciam maiúsculas de minúsculas. Por exemplo, verifique se os valores usados no atributo para a propriedade AssociationAttribute.Storage coincidem maiúsculas e minúsculas para os nomes de propriedades correspondentes usados em outro lugar no código. Isso se aplica a todas as linguagens de programação do .NET, mesmo as 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 | Type | Padrão | Descrição |
---|---|---|---|
Code | String | Nenhum. O valor deve ser fornecido. | Especifica o valor do código do discriminador. |
IsDefault | Booliano | false |
Se for verdadeiro, instancia objeto desse tipo quando nenhum valor de discriminador no repositório coincide com nenhum 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 FunctionAttribute
Use esse atributo para designar um método como representação de 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 | Type | Padrão | Descrição |
---|---|---|---|
IsComposable | Boolean | false |
Se for falso, indica o mapeamento para um procedimento armazenado. Se for verdadeiro, indica o mapeamento para uma função definida pelo usuário. |
Name | String | Mesma cadeia de caracteres que nome no banco de dados | Especifica o nome do procedimento armazenado ou 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 procedimentos armazenados.
A tabela a seguir descreve as propriedades desse atributo.
Propriedade | Type | Padrão | Descrição |
---|---|---|---|
DbType | String | Nenhum | Especifica o tipo de banco de dados. |
Name | String | 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 esse atributo para especificar um tipo de resultado.
A tabela a seguir descreve as propriedades desse atributo.
Propriedade | Type | Padrão | Descrição |
---|---|---|---|
Type | Type | (Nenhuma) | Usado em métodos mapeados para procedimentos armazenados que retornam IMultipleResults. Declarar os mapeamentos de tipos 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 | Type | Padrão | Descrição |
---|---|---|---|
Name | String | Mesmo que o nome no banco de dados | Especifica o nome da tabela, coluna e assim por diante. |
Storage | String | Acessadores públicos | Especifica o nome do campo de armazenamento subjacente. |
Para obter mais informações, consulte DataAttribute.