仅供参考:我明确指SQL Server 2000-8和C#。所以支持MySql这样的枚举的DBMS不是我的问题的主题。将枚举值存储在数据库中
我知道这个问题已经在SO中多次提出过。但是,我仍然看到在答案中采用了不同的方法来将枚举值存储在db中。在代码
保存枚举如在分贝int和提取枚举值(使用反射或枚举描述属性):
这是我通常使用的方法。问题是当我试图从SSMS中的数据库查询时,检索到的数据很难理解。将枚举保存为字符串(varchar)并将其转换回代码中的int。
其实,这可能是最好的解决方案。但是(不要笑!)它感觉不对。我不确定这些缺点。 (除了通常可以接受的db中的更多空间)那么还有其他方法反对这种方法?在db中有一个单独的表,它与代码的枚举定义同步并在主表和枚举表之间建立外键关系。
问题是,当以后应该添加另一个枚举值时,代码和数据库都需要更新。此外,可能会有错别字,这可能是一种痛苦!
所以一般时,我们可以接受第二液对数据库的开销,什么是存储在数据库枚举值的最佳方式是什么?有关于此的一般定义的设计模式规则吗?
谢谢。
嗯,你是对的。第2号导致麻烦如果我们想要重命名枚举值。 +1谢谢! – Kamyar 2011-05-25 16:39:19
如果您重新排列枚举,则1号会导致麻烦。 – 2011-05-25 16:56:41
@Chris:然后明确定义值。 – vcsjones 2011-05-25 16:57:44