enumeração sincronia com dados estáticos de uma base de dados
-
11-07-2019 - |
Pergunta
Eu tenho uma enumeração de códigos de status de entrega. E quando eu salvar dados de fornecimento para o banco de dados que são armazenados com uma chave estrangeira para uma tabela contendo os mesmos dados (isto é, os mesmos códigos de entrega)
Qual é a melhor estratégia para manter uma enumeração em sincronia com os dados em um banco de dados?
Você lembre-se de adicionar à enumeração quando um novo código é adicionado ao banco de dados?
Ou carregar os dados em um dicionário quando o aplicativo é iniciado? E usar o dicionário em vez de uma enumeração? Embora isso significa que eu não tenho uma representação fortemente tipado dos dados -. Que eu definitivamente quero
Ou algo mais?
Os dados não é muito volátil, mas novos códigos que são adicionados uma vez a cada lua azul
Gostaria de receber quaisquer sugestões.
graças
Solução
Eu uso modelos T4 no Visual Studio 2008. Desta forma, posso forçar a geração de código durante a compilação e gera enumerações para cada tabela que eu quero.
Um bom ponto de partida seria amostra de Hilton Giesenow, que eu acredito respostas exatamente a sua pergunta.
Uma abordagem mais interessante, de um ângulo diferente, seria a utilização de vistas SQL para enums imitar em banco de dados. Desta forma, você sincronizar o banco de dados com o seu C # (ou outros) de código. Você pode encontrar um ótimo post sobre isso no blog de Oleg Sych, aqui .
Outras dicas
Quando eu uso uma enumeração no código, eu costumo guardar o nome formatado como um varchar no banco de dados, em vez de manter uma tabela de valores de enumeração no banco de dados. Sei que isso não é tão normalizado como se poderia desejar, mas eu acredito que é melhor do que tentar manter o banco de dados e minha enumeração sincronizado. Tudo o que é necessário é para o formato em insert / update e análise sobre selecionar para reconstituir o valor de volta para a enumeração.
Eu só faço isso quando eu acreditar que a enumeração vai ser fixo - embora, eu também têm feito atualizações freqüentes. Se eu acredito que é provável que os dados serão atualizados regularmente, eu não vou usar uma enumeração e terá uma tabela separada no banco de dados com referências de chave estrangeira.