如何使用存储在数据库中的定义来定义源代码中的定义



我想得到一些想法如何使用定义存储在数据库(这是由您的应用程序使用)到应用程序的源代码。

的例子:

    汽车
  • CarTypeDefinitions

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

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

像<

CarTypeDefinitions包含条目em>"跑车", "越野车""卡车"

<

源代码/strong>

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

一个可能的实现

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

public enum ECarTypeDefinitions
{
    SportsCar = 1,
    SUV = 2,
    Truck = 3
}
现在我们有了一个类型安全的Enum,我们可以像这样使用它:

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

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

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

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

我按你建议的方法做。有些人更喜欢将所有常量组合到一个"查找"表中。您可以在这里查看一些优缺点的示例:http://weblogs.foxite.com/andykramek/archive/2009/05/10/8419.aspx

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

为每个Car Type创建一个类:

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#也有点生疏。

相关内容

  • 没有找到相关文章

最新更新