使用来自数据库的静态数据同步枚举

时间:2008-11-27 03:01:16

标签: c# enums enumeration

我有一份递送状态代码的枚举。当我将交付数据保存到数据库时,它们与外键一起存储到包含相同数据的表(即相同的交付代码)

使枚举与数据库中的数据保持同步的最佳策略是什么?

您是否记得在将新代码添加到数据库时添加到枚举中?

或者在应用程序启动时将数据加载到字典中?并使用字典而不是枚举?虽然这意味着我没有强类型的数据表示 - 我绝对想要。

还是其他什么?

数据不是很不稳定,但每个蓝月亮都会添加新代码

感谢任何建议。

感谢

2 个答案:

答案 0 :(得分:4)

我在Visual Studio 2008中使用T4模板。这样,我可以在构建期间强制生成代码,并为每个我想要的表生成枚举。

一个很好的起点是Hilton Giesenow's sample,我相信这完全可以回答你的问题。

从不同角度来看,一种更有趣的方法是使用SQL视图来模拟数据库中的枚举。这样您就可以将数据库与C#(或其他)代码同步。你可以在Oleg Sych的博客here上找到一篇很棒的帖子。

答案 1 :(得分:0)

当我在代码中使用枚举时,我通常将格式化的名称作为varchar存储在数据库中,而不是在数据库中保存枚举值的表。我意识到这并不像人们想象的那样正常化,但我相信它比试图保持数据库和枚举同步更好。所需要的只是在插入/更新上格式化并在select上解析以将值重新组合回枚举。

当我相信枚举将被修复时,我才会这样做 - 尽管我也经常更新。如果我认为数据可能会定期更新,我将不会使用枚举,并且在数据库中将有一个单独的表与外键引用。

相关问题