Cela dépend en partie de savoir si les ID de vos statuts ont des valeurs garanties ou si les ID peuvent changer par base de données (via un IDENTITY
). Personnellement, pour les statuts je préfère fixe - qui vous donne le plus de flexibilité, et moins de frais généraux - vous pouvez choisir d'utiliser une énumération (ou peut-être certains consts si plus pratique), et vous n'aurez jamais à ajouter une indirection c'est open
".
Ce n'est pas toujours possible, et quand il n'est pas, il est toujours utile de les mettre en cache et de les réutiliser (pour éviter de toucher le DB pour cette recherche). Cependant, j'éviterais un singleton, surtout parce qu'il ne fonctionnera pas bien si vous avez besoin de parler à plus d'une base de données - les identifiants de chacun pourraient bien être différents. Cependant, toute implémentation de cache appropriée (ou peut-être IoC/DI) devrait vous permettre de stocker les données appropriées (probablement un type de dictionnaire). Singletons sont aussi juste un peu de douleur généralement si vous aimez tester etc.
Mais: un enum et fixe des valeurs id est beaucoup plus simple.
Notez que sous toute mise en œuvre, modification de la liste d'état est une opération non négligeable, pas moins ce sera un grand UPDATE
(ou plusieurs si vous dénormaliser).
Ce qui est « un ENUM d'un singleton "? –
pas sûr que je comprends la question. qu'est-ce que "enum d'un singleton"? Si vous voulez dire "enum OU singleton", cela n'a toujours pas de sens. enum est un type de valeur utilisé pour définir un ensemble de constantes nommé. singleton est un modèle dans lequel vous définissez une instance de quelque chose à utiliser par l'ensemble de votre application. – RPM1984
Que voulez-vous dire exactement? –