Compartilhar via


Mapeamentos de tipo personalizados de SQL-CLR

O mapeamento de tipo entre o SQL Server e o CLR (Common Language Runtime) é especificado automaticamente quando você usa a ferramenta de linha de comando SQLMetal, Designer Relacional de Objeto (Designer O/R).

Quando nenhum mapeamento personalizado é executado, essas ferramentas atribuem mapeamentos de tipo padrão conforme descrito no Mapeamento de TipoSQL-CLR. Se você quiser digitar mapeamentos de forma diferente desses padrões, precisará fazer alguma personalização dos mapeamentos de tipo.

Ao personalizar mapeamentos de tipo, a abordagem recomendada é fazer as alterações em um arquivo DBML intermediário. Em seguida, o arquivo DBML personalizado deve ser usado quando você cria arquivos de código e mapeamento com o SQLMetal ou o Designer O/R.

Depois de criar uma instância do objeto DataContext a partir dos arquivos de código e mapeamento, o método DataContext.CreateDatabase cria um banco de dados com base nos mapeamentos de tipo especificados. Se não houver atributos CLR type especificados nos mapeamentos, os mapeamentos de tipo padrão serão usados.

Personalização com SQLMetal ou Designer O/R

Com o SQLMetal e o Designer O/R, você pode criar automaticamente um modelo de objeto que inclui as informações de mapeamento de tipo dentro ou fora do arquivo de código. Como esses arquivos são substituídos pelo SQLMetal ou O/R Designer, cada vez que você recria seus mapeamentos, a abordagem recomendada para especificar mapeamentos de tipo personalizado é personalizar um arquivo DBML.

Para personalizar mapeamentos de tipo com SQLMetal ou Designer O/R, primeiro gere um arquivo DBML. Em seguida, antes de gerar o arquivo de código ou o arquivo de mapeamento, modifique o arquivo DBML para identificar os mapeamentos de tipo desejados. Com o SQLMetal, você precisa alterar manualmente os atributos Type e DbType no arquivo DBML para fazer suas personalizações de mapeamento de tipo. Com o Designer O/R, você pode fazer suas alterações no Designer. Para obter mais informações sobre como usar o Designer O/R, consulte LINQ to SQL Tools no Visual Studio.

Observação

Alguns mapeamentos de tipo podem resultar em estouro ou exceções de perda de dados ao converter para ou do banco de dados. Examine cuidadosamente a matriz de comportamento em tempo de execução de mapeamento de tipo em Mapeamento de tipo SQL-CLR antes de fazer qualquer personalização.

Para que suas personalizações de mapeamento de tipo sejam reconhecidas pelo SQLMetal ou O/R Designer, você precisa garantir que essas ferramentas sejam fornecidas com o caminho para o arquivo DBML personalizado ao gerar seu arquivo de código ou arquivo de mapeamento externo. Embora não seja necessário para personalização de mapeamento de tipo, é recomendável que você sempre separe as informações de mapeamento de tipo do arquivo de código e gere o arquivo de mapeamento de tipo externo adicional. Isso deixará alguma flexibilidade ao não exigir que o arquivo de código seja recompilado.

Incorporando alterações de banco de dados

Quando o banco de dados for alterado, você precisará atualizar o arquivo DBML para refletir essas alterações. Uma maneira de fazer isso é automaticamente criar um novo arquivo DBML e novamente faz nas personalizações de mapeamento de tipo. Como alternativa, você pode comparar as diferenças entre o novo arquivo DBML e o arquivo DBML personalizado e atualizar manualmente o arquivo DBML personalizado para refletir a alteração do banco de dados.

Consulte também