Pregunta

Tengo una enumeración de los códigos de estado de entrega. Y cuando guardo los datos de entrega en la base de datos, se almacenan con una clave externa en una tabla que contiene los mismos datos (es decir, los mismos códigos de entrega)

¿Cuál es la mejor estrategia para mantener una enumeración sincronizada con los datos en una base de datos?

¿Recuerdas agregar a la enumeración cuando se agrega un nuevo código a la base de datos?

¿O cargar los datos en un diccionario cuando se inicia la aplicación? ¿Y usar el diccionario en lugar de una enumeración? Aunque esto significa que no tengo una representación fuertemente tipada de los datos, lo que definitivamente quiero.

¿O algo más?

Los datos no son muy volátiles, pero se agregan nuevos códigos una vez cada luna azul

Agradecería cualquier sugerencia.

gracias

¿Fue útil?

Solución

Utilizo plantillas T4 en Visual Studio 2008. De esta manera, puedo forzar la generación de código durante la compilación y genera Enums para cada tabla que quiero.

Un buen punto de partida sería muestra de Hilton Giesenow , que creo que responde exactamente a su pregunta.

Un enfoque más interesante, desde un ángulo diferente, sería usar vistas SQL para emular enumeraciones en la base de datos. De esta manera, sincroniza la base de datos con su código C # (u otros). Puede encontrar una excelente publicación al respecto en el blog de Oleg Sych, aquí .

Otros consejos

Cuando uso una enumeración en el código, generalmente almaceno el nombre formateado como varchar en la base de datos en lugar de mantener una tabla de los valores de enumeración en la base de datos. Me doy cuenta de que esto no está tan normalizado como uno quisiera, pero creo que es mejor que tratar de mantener sincronizada la base de datos y mi enumeración. Todo lo que se necesita es formatear en insertar / actualizar y analizar en select para reconstituir el valor nuevamente en la enumeración.

Solo hago esto cuando creo que la enumeración se va a arreglar, aunque también he realizado actualizaciones poco frecuentes. Si creo que es probable que los datos se actualicen regularmente, no usaré una enumeración y tendré una tabla separada en la base de datos con referencias de claves externas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top