Подтвердить что ты не робот

Сохранить перечисление как строку в базе данных

Я экспериментирую с dapper. У меня есть класс, который имеет перечисление, и значения хранятся в виде строк в базе данных.

Это работает с FluentNHibernate, используя GenericEnumMapper

Можно ли сделать то же самое с Dapper?

4b9b3361

Ответ 1

В настоящий момент это не построено, здесь предлагается предлагаемое решение: http://code.google.com/p/dapper-dot-net/issues/detail?id=24, о котором мы еще не можем решить, Мне нравится идея расширительных преобразователей типа

В самом деле, самый чистый способ сделать это - определить свойство тени, например:

class MyType
{
   public MyEnum MyEnum {get; private set;}
   private string DBEnum { set { MyEnum = Convert(value);} }

   private MyEnum Convert(string val)
   {
     // TODO: Write me 
   } 
}

// cnn.Query<MyType>("select 'hello' as DBEnum")  <-- will set MyEnum

Ответ 2

Из образца кода, который я только что попробовал, он выглядит не так. Вы можете перечислить перечисление в его базовое целочисленное значение, но если вы попытаетесь сопоставить его с его строковым значением, то будет сброшен DataException.