Я экспериментирую с дэппером.У меня есть класс с перечислением, и значения хранятся в виде строк в базе данных.
Это работает с FluentNHibernate с использованием GenericEnumMapper
Можно ли сделать то же самое с Dapper?
Это не встроено в данный момент, здесь предлагается предлагаемое решение: 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
Из примера кода, который я только что попробовал, похоже нет.Вы можете сопоставить перечисление с его базовым целочисленным значением, но если вы попытаетесь сопоставить его с его строковым значением, выдается DataException.
DataException
Другим решением может быть использование новой расширяемости ITypeMap, хотя ее реализация все еще немного многословна.
https://stackoverflow.com/a/12615036/444917
Сопоставить поле Uri с помощью Dapper