我想得到一些想法如何使用定义存储在数据库(这是由您的应用程序使用)到应用程序的源代码。
的例子:
数据库strong>
- 汽车
- 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#也有点生疏。