Ich denke, dies ist eine weitere Frage zu Hardcodierung und Best Practices. Angenommen, ich habe eine Liste von Werten, beispielsweise Obst, die in der Datenbank gespeichert sind (sie muss in der Datenbank vorhanden sein, da die Tabelle für andere Zwecke wie SSRS-Berichte verwendet wird), mit einer ID:
1 Apple
2 Banana
3 Grapes
Ich kann sie dem Benutzer präsentieren, er wählt eine aus, sie wird in seinem Profil als FavouriteFruit gespeichert und die ID in seinem Datensatz in der Datenbank gespeichert.
Was sind die Empfehlungen für die Zuweisung von Logik zu bestimmten Werten, wenn es um Geschäftsregeln / Domänenlogik geht? Sagen Sie, wenn der Benutzer Trauben ausgewählt hat, die ich für eine zusätzliche Aufgabe ausführen möchte, wie lässt sich der Traubenwert am besten ermitteln:
// 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)
oder etwas anderes?
Da FavouriteFruit natürlich in der gesamten Anwendung verwendet wird, kann die Liste hinzugefügt oder bearbeitet werden.
Jemand könnte entscheiden, dass "Trauben" in "Trauben" umbenannt werden soll, und dies würde natürlich die fest codierte Zeichenfolgenoption aufheben.
Die fest codierte ID ist jedoch nicht vollständig klar, wie gezeigt, können Sie einfach einen Kommentar hinzufügen, um schnell zu erkennen, um welchen Artikel es sich handelt.
Die Enum-Option beinhaltet das Duplizieren von Daten aus der Datenbank, was falsch zu sein scheint, da sie möglicherweise nicht mehr synchron sind.
Trotzdem vielen Dank im Voraus für Kommentare oder Vorschläge.
MyApplication.Grape.ID
stottert sozusagen. Ein "Apple" ist kein "Red_Apple" und nicht mehr als ID 3 ist auch 4. Das Potenzial, "Apple" in "Red_Apple" umzubenennen, ist also nicht sinnvoller, als zu deklarieren, dass 3 4 ist (und vielleicht sogar 3). Ziel einer Aufzählung ist es, ihre numerische DNA zu abstrahieren. Vielleicht ist es an der Zeit, beliebige relationale DB-Schlüssel, die in den eigenen Geschäftsmodellen buchstäblich keine Bedeutung haben , wirklich zu entkoppeln.