2013-02-25 261 views
1

我從db表Role創建了一個新的Enum類,它具有RoleIdRoleType將DB值映射到枚舉

public enum UserType 
{ 
    Student = 1, 
    Teacher = 4 
    Admin = 5 
} 

這裏1,4,5是來自db的RoleId(主鍵)。我所做的是我手動查找每個角色的數據庫主鍵值並將其映射到enum

這裏的缺點是每當我需要更新enum類時db RoleId更改。

是否有任何其他標準做法將db值映射爲enum集合?

任何建議將有助於

+0

更多隻投的價值。 '(UserType)some_value;' – 2013-02-25 05:05:24

+0

你是什麼意思? '(用戶類型)some_value'。我要求將db值映射到'enum'。它有什麼幫助? – DON 2013-02-25 05:06:52

+0

http://stackoverflow.com/questions/725043/dynamic-enum-in-c-sharp – 2013-02-25 05:07:11

回答

2

最近,我一直面臨同樣的問題。 可能的解決方案之一是使用T4模板(代碼生成)。 您可以實現一些自定義邏輯來選擇表格和描述/值列。 像這樣

//Start write enum file:   
    #> 
    namespace <#=enumNameSpace#> 
    { 
     public enum <#=enumName#>Enum 
     { 
     <# 
      command.CommandText = string.Format("SELECT * FROM {0}",TABLE_NAME_GOES_HERE); 
      var columnReader = command.ExecuteReader(); 
      while (columnReader.Read()) 
      {#> 
       <#=columnReader[DESCRIPTION_COLUMN_NAME].ToString()#> = <#=columnReader[VALUE_COLUMN_NAME].ToString()#>, 
      <#  
      }#> 
     } 
    } 
    <# 

您可以在這個偉大的article