2011-03-13 72 views
1

我这是怎么声明枚举:数据库和.net使用枚举

Enum GROUP_TYPE { 
    TYPE1, 
    TYPE2 
} 

这是我如何存储他们:

GroupTypes(id, code) //code is the enum value name 
Groups(id, groupName, groupTypeId) 

在InsertGroup存储过程(我用存储过程)我收到@type_code作为nvarchar,并使用它来查找组类型的正确标识。 我正在使用此方法以便在代码和数据库之间分隔(枚举号不必与GroupTypes表中的id相同)。

在GetGroups存储过程中,为了从数据表中读取代码,我正在检查类型代码是否在GROUP_TYPE中定义,如果是的话,我将字符串代码解析为枚举对象。

我做事情对不对? 有没有更好的方法来处理代码和数据库中的枚举?

+0

[SQL Table和C#枚举]的可能重复(http://stackoverflow.com/questions/1390697/sql-table-and-c-enumeration) – 2011-03-13 04:18:36

+0

另请参见http://stackoverflow.com/questions/2093764/should -i-store-my-enums -in-database-level-or-in-the-application-logic-net – 2011-03-13 04:19:45

回答

3

我会让枚举和表中的id相同。

enum Group 
{ 
    Group1 = 1, 
    Group3 = 3 
} 

这是最简单和最安全的方式。

+0

但是这使得代码依赖于数据而不是方案。 – Naor 2011-03-13 09:39:04

0

我通常是作为数据库列枚举值或名称(最好是明确的设定数值为每BryceH)地图和添加约束到列,确保要注意,在注释的枚举