2013-02-25 7 views
1

Я создал новый класс Enum из таблицы db Role, который имеет RoleId и RoleType.Сопоставление значений DB с Enum

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

Здесь 1,4,5 являются RoleId (Первичный ключ) от db. Что я сделал, так это то, что я посмотрел вручную значение первичного ключа db для каждой роли и сопоставил его с enum.

Недостаток здесь - каждый раз, когда мне нужно обновить класс enum, когда db RoleId Изменения.

Есть ли какая-либо другая стандартная практика для сопоставления значений db как enum коллекций?

Любые предложения помогут

+0

Просто бросить значение. '(UserType) some_value;' –

+0

что вы имели в виду? '(UserType) some_value'. Я прошу отобразить значения db в 'enum'. Как это помогает? – DON

+0

http://stackoverflow.com/questions/725043/dynamic-enum-in-c-sharp –

ответ

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

Смежные вопросы