2011-11-18 100 views
2

存儲經常使用的數據庫表ID的最佳方法是什麼?存儲常用數據庫表ID的最佳方法是什麼?

例如,你有存儲記錄狀態的表格,如主動刪除,清除等,你要創建一個新的用戶記錄,你需要設置RecordStatusID,你會在哪裏獲得這些數據?做數據庫調用?

我見過開發人員創建匹配的表詮釋ID的枚舉,但我不認爲這是最好的方式。

+2

最好的辦法是什麼?性能?內存使用?發展?一致性? – Oded

+0

@Oded老實說,我想聽聽任何這些建議,但可能對我來說,我會選擇性能。 – NullReference

回答

5

如果您的應用程序邏輯依賴於這些值,因此改變表意味着改變你的代碼,我更喜歡創建鏡像表枚舉。

這樣做會創建不需要神奇的字符串,可以包含一個錯字(雖然你在枚舉定義幻數代替它們)可讀的代碼。代碼是有效的,沒有不必要的查詢。

+2

我也用過這種方法很多,發現它很好用。我遇到的唯一問題是如果使用身份標識列將數據遷移到新數據庫 - 易於解決(例如,設置identityinsert),但如果忘記了,可能會出現問題。 –

+0

+1是的,我的方法 - 加上T4,你甚至可以直接從數據庫表 –

+0

@DavidHall生成那些枚舉文件,像這樣的表通常很小,很少修改,所以我沒有看到任何理由爲id使用標識列。 – svick

1

這是依賴於大量的這些因素之間的因素和權衡。例如,如果您有一個包含10行的表永遠不會更改,那麼您可以定義一個emum,或者在啓動應用程序並刪除緩存時讀取一次。但是有很多情況下數據可能會發生變化(即使不經常),並且緩存一次可能是一個可怕的策略。如果沒有這種背景信息,很難回答這樣的問題,對於這樣的問題沒有一個通用的解決方案。

你能不能給我們介紹一下你處理數據的一些更具體的信息?這很可能會導致更好的答案,而不會無意中回頭咬你。

1

你可以在包含默認值的數據庫中創建一個表,並在應用程序啓動時,閱讀它們,並將它們存儲在Dictionary對象。然後從您的.NET代碼中,您只需按名稱訪問這些值。這樣,如果需要更改值,則可以在數據庫中更改這些值,而無需更新.NET代碼。

相關問題