Експериментирам с елегантен. Имам клас, който има enum и стойностите се съхраняват като низове в базата данни.
Това работи с FluentNHibernate, използвайки GenericEnumMapper
Възможно ли е да се направи същото с Dapper?
Експериментирам с елегантен. Имам клас, който има enum и стойностите се съхраняват като низове в базата данни.
Това работи с FluentNHibernate, използвайки GenericEnumMapper
Възможно ли е да се направи същото с Dapper?
Това не е вградено в момента, има предложено решение за това тук: http://code.google.com/p/dapper-dot-net/issues/detail?id=24, за което предстои да вземем решение. Харесва ми идеята за преобразуватели на разширяем тип
Както е сега, най-чистият начин да направите това е да дефинирате свойство shadow, напр.:
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
От примерния код, който току-що опитах, изглежда не. Можете да картографирате enum към неговата основна целочислена стойност, но ако се опитате да го картографирате към неговата низова стойност, се хвърля DataException
.
Друго решение може да бъде използването на новата разширяемост на ITypeMap, въпреки че все още е малко многословна за прилагане.
https://stackoverflow.com/a/12615036/444917
Картиране на Uri поле с помощта на Dapper