2015-04-20 3 views
0

У меня есть следующая проблема. Я использую Dapper для подключения к базе данных, поле, которое является varchar в базе данных, является перечислением в моем объекте. Нет никакой проблемы для Dapper для сопоставления объекта базы данных с моим DTO, если перечисление имеет то же имя, что и строка в базе данных. К сожалению, строки в базе данных не очень удобны для пользователя, и мне было интересно, есть ли способ их сопоставить или конвертировать (только перечисления), чтобы использовать более удобные для пользователя версии. Например, значение базы данных для поля:Отображение перечислений при использовании dapper

SomeVeIRdLooking_Value 

И я хотел бы, чтобы сопоставить:

public enum MyEnum { 
    MyFormattedValue 
} 
+0

Я не думаю, что в настоящее время поддерживается поддержка dapper. Он поддерживает числовое преобразование и преобразование прямого имени. Я проверю код, когда я нахожусь на ПК, хотя –

ответ

0

Вы можете выбрать значение строки из базы данных и преобразовать его вручную.

public enum MyEnum 
    { 
     None, 
     Success, 
     Failure 
    } 

    var enums = connection.Query<string>("select 'None' union select 'Success' union select 'Failure'") 
      .Select(x => Enum.Parse(typeof (MyEnum), x)) //use your own method to parse enum from string 
      .ToList(); 
+0

Спасибо за ответ, но это не то, что я ищу. Запрос - это выбор * из ... и в нем есть несколько перечислений. –

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