将DB值映射到Enum

时间:2013-02-25 05:03:02

标签: c# asp.net-mvc-4 enums

我从db表Enum创建了一个新的Role类,其中包含RoleIdRoleType

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

这里1,4,5是db的RoleId(主键)。我所做的是我手动查看每个角色的db主键值,并将其映射到enum

这里的缺点是每次我需要在db enum更改时更新RoleId类。

是否有其他标准做法将db值映射为enum个集合?

任何建议都会有所帮助

1 个答案:

答案 0 :(得分:3)

最近,我一直面临同样的问题。 其中一种可能的解决方案是使用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

中阅读更多内容