2008-11-27 99 views
0

我有一個枚舉傳遞狀態代碼。當我將交付數據保存到數據庫時,它們與外鍵一起存儲到包含相同數據的表(即相同的傳遞代碼)同步枚舉與來自數據庫的靜態數據

保持枚舉與數據庫中的數據同步的最佳策略是什麼?

您是否只記得在將新代碼添加到數據庫時添加到枚舉中?

或者在應用程序啓動時將數據加載到字典中?並用字典而不是枚舉?儘管這意味着我沒有數據的強類型表示 - 我確實希望這樣做。

或者其他什麼東西?

的數據不是很不穩定,但新的代碼確實會增加每一個藍色的月亮一次

將不勝感激的任何建議。

感謝

回答

4

我在Visual Studio 2008中使用T4模板。這樣,我可以在構建過程中強制生成代碼,併爲每個我想要的表生成Enums。

一個好的起點將是Hilton Giesenow's sample,我相信這正是您的問題的答案。

從不同角度來看,更有趣的方法是使用SQL視圖來模擬數據庫中的枚舉。這樣您可以將數據庫與您的C#(或其他)代碼同步。你可以在Oleg Sych的博客here上找到一篇關於它的好文章。

0

當我使用的代碼枚舉,我通常的格式名稱存儲在數據庫中的一個varchar,而不是保持枚舉值的數據庫中的表。我意識到這並不像人們想象的那樣規範化,但我相信它比試圖保持數據庫和枚舉同步更好。所有需要的是在插入/更新時進行格式化,並在選擇時解析以將值重新組織到枚舉中。

我只在做這件事的時候,我相信枚舉將會被修復 - 儘管我也做了很少的更新。如果我相信數據可能會定期更新,那麼我將不會使用枚舉,並且會在數據庫中使用外鍵引用的單獨表。