Domanda

Ho un elenco di codici di stato della consegna. E quando salvo i dati di consegna nel database, questi vengono archiviati con una chiave esterna in una tabella contenente gli stessi dati (ovvero gli stessi codici di consegna)

Qual è la migliore strategia per mantenere un'enumerazione sincronizzata con i dati in un database?

Ti ricordi di aggiungere all'enumerazione quando un nuovo codice viene aggiunto al database?

O caricare i dati in un dizionario all'avvio dell'applicazione? E utilizzare il dizionario anziché un'enumerazione? Ciò significa che non ho una rappresentazione fortemente tipizzata dei dati, che sicuramente desidero.

O qualcos'altro?

I dati non sono molto volatili ma vengono aggiunti nuovi codici una volta ogni luna blu

Gradirei eventuali suggerimenti.

grazie

È stato utile?

Soluzione

Uso i modelli T4 in Visual Studio 2008. In questo modo, posso forzare la generazione di codice durante la compilazione e genera Enum per ogni tabella che desidero.

Un buon punto di partenza sarebbe Il campione di Hilton Giesenow , che credo risponda esattamente alla tua domanda.

Un approccio più interessante, da un'angolazione diversa, sarebbe quello di utilizzare le viste SQL per emulare gli enum nel database. In questo modo sincronizzi il database con il tuo codice C # (o altri). Puoi trovare un ottimo post a riguardo sul blog di Oleg Sych, qui .

Altri suggerimenti

Quando utilizzo un'enumerazione nel codice, di solito memorizzo il nome formattato come varchar nel database anziché mantenere una tabella dei valori di enumerazione nel database. Mi rendo conto che questo non è così normalizzato come si potrebbe desiderare, ma credo sia meglio che cercare di mantenere sincronizzati il ??database e la mia enumerazione. Tutto ciò che serve è formattare su insert / update e analizzare su select per ricostituire il valore nell'enumerazione.

Faccio questo solo quando credo che l'enumerazione verrà risolta, anche se anch'io ho fatto aggiornamenti poco frequenti. Se credo che è probabile che i dati vengano aggiornati regolarmente, non userò un elenco e avrò una tabella separata nel database con riferimenti a chiave esterna.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top