簡體   English   中英

從數據庫或反之亦然生成枚舉?

[英]Generate Enums from Database or Vice Versa?

我想弄清楚哪種方法是“正確的”。 我在我的數據庫中有一堆查找表,並希望在這些值之上放置一個枚舉,因此,在編碼時,它更容易閱讀(以及不使用硬編碼值)。

我想知道是否應該根據現有的枚舉生成我的表值,或者我是否應該從表的值生成枚舉。

編輯

根據前幾條評論,這里有一些澄清:

值的變化頻率可能相當頻繁,因為它們意圖是相當動態的。 話雖如此,在添加任何一種方法之前都需要編譯,因為需要更新枚舉以公開新值。

這種需求的主要原因是因為我們不希望將人們綁定到特定的值列表,我們希望應用程序能夠在需要時添加新條目。

在過去,我們已經從枚舉中生成了數據,但我是第二個猜測自己

我們通常從數據庫生成枚舉。 我們使用CodeSmith ,它允許我們創建項目文件,可以根據需要輕松地重新生成枚舉。

我們偶爾會走另一條路,通常用於報告目的(當現有的枚舉值保持不變時)。

當然,我們有枚舉,其價值永遠不會持久。

通常,從數據庫生成枚舉的唯一原因是代碼是否需要根據它們做出決策。 如果您只想填充ComboBox並堅持用戶的選擇,請不要生成枚舉。

顯然,基於值可以改變的枚舉(或字符串)做出決策是脆弱的。 您可能需要考慮在數據庫模式中包括過期日期(或“從”和“到”日期),以便不刪除現有值。 填充UI選擇器時篩選過期的值。 這也使得引用完整性變得更容易。

與在C#中一樣,您必須知道枚舉值可能超出預期范圍。 在您的switch上包含default

我們提出了幫助類來創建緩存查找列表,使這些更容易使用。

我不是主張走這條路。 如果必須,我們就是這樣做的。

還有第三個選項,你有一個顯式模型,它描述了你需要的詳細程度的模式,然后從該模型生成數據和模式。

關於你的問題,我認為你應該做的是在你的背景下思考問題,並列出每個選擇的優缺點,並決定什么對你和你的業務最有意義。

我曾經為不同的應用程序工作過三種策略,我個人更喜歡的是根據上下文有一個明確的模型。

抱歉模糊,但我認為對於這些問題,真正的黃金法則總是適用於所有情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM