2013-02-25 133 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