Immagino che questa sia un'altra domanda sulla codifica e le migliori pratiche. Supponiamo di avere un elenco di valori, diciamo frutta, memorizzato nel database (deve essere nel database poiché la tabella viene utilizzata per altri scopi come i report SSRS), con un ID:
1 Apple
2 Banana
3 Grapes
Potrei presentarli all'utente, ne seleziona uno, viene memorizzato nel suo profilo come FavouriteFruit e l'ID memorizzato nel suo record nel database.
Quando si tratta di regole aziendali / logica di dominio, quali sono i consigli per assegnare la logica a valori specifici. Di 'se l'utente ha selezionato Uva Voglio svolgere qualche compito extra, qual è il modo migliore per fare riferimento al valore Uva:
// Hard coded name
if (user.FavouriteFruit.Name == "Grapes")
// Hard coded ID
if (user.FavoriteFruit.ID == 3) // Grapes
// Duplicate the list of fruits in an enum
if (user.FavouriteFruit.ID == (int)Fruits.Grapes)
o qualcos'altro?
Poiché, naturalmente, FavouriteFruit verrà utilizzato in tutta l'applicazione, l'elenco può essere aggiunto o modificato.
Qualcuno potrebbe decidere di voler rinominare 'Uva' in 'Uva' e questo ovviamente spezzerebbe l'opzione di stringa codificata.
L'ID hardcoded non è completamente chiaro, sebbene, come mostrato, potresti semplicemente aggiungere un commento per identificare rapidamente quale elemento è.
L'opzione enum comporta la duplicazione dei dati dal database che sembra errato in quanto potrebbe non essere sincronizzato.
Comunque, grazie in anticipo per eventuali commenti o suggerimenti.
MyApplication.Grape.ID
balbetta, per così dire. Una "Apple" non è una "Red_Apple" non più che l'ID di 3 è anche 4. Quindi il potenziale per rinominare "Apple" in "Red_Apple" non ha più senso che dichiarare che 3 è 4 (e forse anche 3). Il punto di un enum è di sottrarre il suo DNA numerico. Quindi, forse è il momento di veramente disaccoppiare arbitrarie chiavi DB relazionali che letteralmente non hanno significato in modelli di business di uno.