LINQ to SQL strings para enumerações
-
08-06-2019 - |
Pergunta
LINQ to SQL permite que os mapeamentos de tabela sejam convertidos automaticamente para Enums, especificando o tipo da coluna - isso funciona para strings ou inteiros.
Existe uma maneira de tornar a conversão insensível a maiúsculas e minúsculas ou adicionar uma classe de mapeamento personalizada ou método de extensão à mistura para que eu possa especificar a aparência da string com mais detalhes.
As razões para fazer isso podem ser para fornecer uma convenção de nomenclatura melhor dentro de algum novo código C # moderno em um sistema onde o esquema de dados já está definido (e está sendo usado por alguns aplicativos legados) para que o texto real no banco de dados possa ' não ser alterado.
Solução
Você sempre pode adicionar uma classe parcial com o mesmo nome da sua classe LinqToSql e então definir seus próprios parâmetros e funções.Eles estarão então acessíveis como parâmetros e métodos de objeto para este objeto, da mesma forma que os métodos LinqToSql gerados automaticamente são acessíveis.
Exemplo:Você tem uma classe LinqToSql chamada Car
que mapeia para a tabela Car no banco de dados.Você pode então adicionar um arquivo ao App_Code com o seguinte código:
public partial class Car {
// Add properties and methods to extend the functionality of Car
}
Não tenho certeza se isso atende totalmente ao seu requisito de alterar a maneira como os Enums são mapeados em uma coluna.No entanto, você pode adicionar um parâmetro onde as propriedades get/set funcionarão para mapear as enumerações necessárias, mantendo as coisas sem distinção entre maiúsculas e minúsculas.