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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top