2012-06-05 44 views
0

让我们想象下面的场景:以正确的方式分离数据

我有一个表“类型”和一个表“事情”。每个“东西”都有一个通过“Things.TypeId”列定义的类型,在“Types.Id”列中有一个外键。

现在我想通过我的C#代码访问这些类型,它将类型加载到列表中,以便我可以在我的应用程序中使用它。

现在我们来想一下一种方法,它试图加载所有类型为“1”的“事物”给我的应用程序。

SELECT * FROM Things WHERE TypeId = {0}"

在哪里我现在得到的类型 “一” 的TYPEID?通常情况下,枚举将适用于此,但由于类型存储在我的数据库中并在运行时检索,因此我们不能使用枚举。

我该如何处理这个问题?

回答

2

您可以用加入

select things.* 
from things 
join type on thing.typeID = type.typeID 
where type.name = 'one' 

还是做程序启动时,您可以键入装入与TYPEID该键的字典和命名值。您也可以将DictionaryList绑定到Combobox,在其中显示值但使用该键。

+0

感谢您的回答。但是这意味着要保存冗余数据(因为'一个'将在数据库中,并且在代码中是常量) – SeToY

+0

问题是“one”。然后看我的答案的第二部分。在程序加载时,将密钥和值检索到集合中。 .NET中的很多集合。字典只是一个。 – Paparazzi