これはハードコーディングとベストプラクティスに関する別の質問だと思います。データベースに保存されている値のリストがあるとしましょう(テーブルはSSRSレポートなどの他の目的に使用されるため、データベースに存在する必要があります)。
1 Apple
2 Banana
3 Grapes
それらをユーザーに提示し、ユーザーが1つ選択すると、FavouriteFruitとしてプロファイルに保存され、IDがデータベースのレコードに保存されます。
ビジネスルール/ドメインロジックに関しては、特定の値にロジックを割り当てるための推奨事項は何ですか。ユーザーがGrapesを選択した場合、追加のタスクを実行したい場合、Grapes値を参照する最良の方法は次のとおりです。
// 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)
または、他の何か?
もちろん、FavouriteFruitはアプリケーション全体で使用されるため、リストは追加または編集できます。
誰かが「ブドウ」の名前を「ブドウ」に変更したいと思うかもしれませんが、これはもちろんハードコードされた文字列オプションを壊します。
ハードコードされたIDは完全には明確ではありませんが、示されているように、コメントを追加するだけで、どのアイテムであるかをすばやく識別できます。
enumオプションには、データベースからのデータの複製が含まれますが、同期が取れなくなる可能性があるため、間違っているようです。
とにかく、コメントや提案を事前に感謝します。
MyApplication.Grape.ID
いわば、st音です。「Apple」は「Red_Apple」ではなく、IDが3でも4です。したがって、「Apple」を「Red_Apple」に名前変更する可能性は、3が4(さらには3)であることを宣言する以上に意味がありません。enumのポイントは、その数値DNAを抽象化することです。ですから、ビジネスモデルで文字通り意味を持たない任意のリレーショナルDBキーを実際に分離する時が来たのかもしれません。