僅供參考:我明確指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