我有一些带有一些静态表的数据库(Oracle)。即这些表中的值是只读的。这些表的结构如下:
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)。有时我必须写一些类似的东西:
if (OrderedFood.FoodType.Name == "APPLE") ...
但是,这不是很方便,因为在这种情况下,我总是需要记住存储在FOOD表中的确切名称。 (在实际情况中,这些名称要长得多)
我正在考虑创建一个包含大量字符串的类:
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";
...
}
所以我可以像这样使用这个类:
if (OrderedFood.FoodType.ID == FoodTypes.APPLE) ...
在这种情况下,我将永远知道我拥有的FOOD类型(以及Visual Studio的IntelliSense也会知道它)。 我知道在这种情况下我在代码中复制了DB值,这显然不是最佳实践。但是,这样做是否非常糟糕?
也许还有另一种方法来引用代码中的DB值?
答案 0 :(得分:0)
最好做公共库Food.dll,它会声明你需要的所有内容,并添加对你的项目的引用。
public enum FoodTypes
{
APPLE,
PEAR,
GRAPE,
MEAT,
...
}
所以在那之后你不需要检查你是否在类中记录类似于数据库记录,没有案例检查等。
编辑:
您可以为每个ID添加ID以在数据库中存储订单历史记录。
Apple = 1,
Meat = 2