如何将存储在数据库中的定义用于源代码中的定义?

时间:2011-04-26 10:34:46

标签: database enums definition

我想了解如何使用存储在数据库中的定义(应用程序使用的定义)到应用程序的源代码中。

示例:

数据库

  • 汽车
  • CarTypeDefinitions

Cars列通过外键链接到CarTypeDefinitions中的行,因此定义了Cars中包含的汽车类型。

Cars包含'Aston Martin DB8''Range Rover''Mercedes Actros'等条目。

CarTypeDefinitions包含'跑车''SUV''Truck'等条目。

源代码

现在我希望能够在我的源代码中使用这些定义。所以我们需要在CarTypeDefinitions表中的行和源代码中的(最好)类型安全的实现之间创建某种映射。

一种可能的实施方式

我想到的第一件事(我特别关注其他解决方案或反馈)就是创建一个Enum ECarTypeDefinitions

public enum ECarTypeDefinitions
{
    SportsCar = 1,
    SUV = 2,
    Truck = 3
}

现在我们有一个类型安全Enum,我们可以使用它,例如像这样:

public bool IsSportsCar(Car currentCar)
{
    return (currentCar.CarType == ECarTypeDefinitions.SportsCar);
}

该枚举的内容将从CarTypeDefinitions表的内容自动生成(为枚举名称及其整数值添加两个附加列)。

这也可以用另一种方式,例如从CarTypeDefinitions ECarTypeDefinitions生成Enum数据库表的内容。

我很想知道如何解决这个问题的其他方法。你是怎么处理的?

1 个答案:

答案 0 :(得分:0)

我按你建议的方式做。其他一些人喜欢将所有常量组合成一个“查找”表。您可以在此处查看一些优缺点的示例:http://weblogs.foxite.com/andykramek/archive/2009/05/10/8419.aspx

编辑:这是一个可能有助于激发你的进一步想法的想法。

为每种车型创建一个类:

public class SportsCarType
{
}

现在为CarTypeDefinition添加一个属性:

public class CarTypeDefinition
{
    ...
    public string typeName;
}

使用typeof:

填充新属性(对于您拥有的每种类型)
...
carTypeDefinition.typeName = typeof(SportsCarType).Name;
...

最后你的新IsSportsCar方法:

public bool IsSportsCar(Car currentCar)
{
    return (currentCar.CarType.typeName == typeof(SportsCarType).Name);
}

我不熟悉实体框架所以也许它有办法让这种事情更干净。 C#也有点生疏。