私はいくつかの静的テーブルを持つデータベース(Oracle)を持っています。私。これらのテーブルの値は読み取り専用です。これらのテーブルは、このような構造を持っている: DBレコードをコードに格納するのは悪い習慣ですか?
FOOD_TYPE_ID FOOD_TYPE_NAME
------------------------------------ ---------------
E34FD113-D793-4EA0-A0D2-6F379D1AAC00 APPLE
30939FE7-3B8E-4857-A6F8-BBCC37CF293C PEAR
25B474B4-264D-45D7-9873-F0E73484BA65 GRAPE
35B00E15-8B5D-4519-ADAC-AC4325E9DE7A MEAT
そしてFOOD_TYPE_IDの外部キーがある他のテーブルで
。私のアプリケーション(C#)にはORM(DbLinq)があります。そして、時には私のようなものを書くことがあります。この場合には、私は常に念頭に置いてFOODテーブルに格納されている正確な名前を維持する必要があるため
if (OrderedFood.FoodType.Name == "APPLE") ...
それは、しかし、非常に便利ではありません。 (実際のケースでは、これらの名前ははるかに長いです)
私は次のように文字列の束を持つクラスを作成すると思っています。だから私はこのように、このクラスを使用することができるだろう
public static class FoodTypes
{
public const string APPLE = "E34FD113-D793-4EA0-A0D2-6F379D1AAC00";
public const string PEAR = "E34FD113-D793-4EA0-A0D2-6F379D1AAC00";
public const string GRAPE= "25B474B4-264D-45D7-9873-F0E73484BA65";
public const string MEAT= "35B00E15-8B5D-4519-ADAC-AC4325E9DE7A";
...
}
:
私はいつも知っている、私はどのようなFOODタイプ(そしてVisual StudioのIntelliSenseもそれを知っているでしょう)。 このケースでは、コード内にDB値が重複していることがわかりますが、これはベストプラクティスではありません。しかし、これを行うことは非常に悪いですか?
また、コード内のDB値を参照する別の方法がありますか?
あります。 'OrderedFood.FoodType.Name'は正しい方法です。無意味なIDでコードを混乱させるのはなぜですか? –