Съхранявайте enum като низ в база данни

Експериментирам с елегантен. Имам клас, който има enum и стойностите се съхраняват като низове в базата данни.

Това работи с FluentNHibernate, използвайки GenericEnumMapper

Възможно ли е да се направи същото с Dapper?


person Yavor Shahpasov    schedule 31.05.2011    source източник


Отговори (3)


Това не е вградено в момента, има предложено решение за това тук: 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
person Sam Saffron    schedule 01.06.2011

От примерния код, който току-що опитах, изглежда не. Можете да картографирате enum към неговата основна целочислена стойност, но ако се опитате да го картографирате към неговата низова стойност, се хвърля DataException.

person adrianbanks    schedule 31.05.2011

Друго решение може да бъде използването на новата разширяемост на ITypeMap, въпреки че все още е малко многословна за прилагане.

https://stackoverflow.com/a/12615036/444917

Картиране на Uri поле с помощта на Dapper

person Clay    schedule 18.12.2012