我想了解如何使用存储在数据库中的定义(应用程序使用的定义)到应用程序的源代码中。
示例:
数据库
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
数据库表的内容。
我很想知道如何解决这个问题的其他方法。你是怎么处理的?
答案 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#也有点生疏。