2014-01-06 21 views
0

我在我的數據庫中有一個表,它有2列ID和var char Role。我知道ID 99將與管理員身份相關,但我不想對此值進行硬編碼。有人建議尋找Enums來做到這一點,迄今爲止我看到的所有例子對我來說都沒有意義,它們看起來並不比硬編碼值更好。將數據庫中的ID鏈接到枚舉

enum Role 
{ 
    Admin= 99, 
    Commoner= 1, 
    Pleb= 3, 
    King= 5 
} 

是那裏混凝土這種關係使得例如,如果有人錯誤地播種管理員ID爲9999,作爲預期我的應用程序可以處理這和工作的方式。

我知道我可以嘗試像

Admin = dataContext.Set<Role>().First(x => x.Name == "Admin"); 

,但我不知道是否有一個正確的方式來做到這一點?或者有人以不同的方式做了嗎?

+0

enum也是硬編碼的。但這確實沒有意義。它甚至使情況變得更糟,因爲枚舉_all_角色是硬編碼的。但是你需要一種硬編碼的價值。 –

回答

0

您可以加載這些值時,應用程序啓動並追究他們的字典

var roles = new Dictionary<int, Role>(): 

我想的是,應用程序運行時,這些ID應該不會改變,所以一旦你擁有了它加載,你可以看看它在字典中類似

var roleForId = roles[id]; 
var idForAdmin = roles.FirstOrDefault(x => x.Value == Role.Admin).Key; 

是你所追求的?

+0

你們和我在想什麼類似,另一個選擇是使用web.config併爲我的每個環境轉換值。我認爲這可能更清潔? –

+0

它可以。取決於您打算如何在未來擴展您的應用程序。 –

+0

我只是在和我的團隊談論它,我們認爲在數據庫方面正確解決這個問題可能會更好。其他一切只是解決人爲錯誤導致的問題的解決辦法 –

相關問題