Stocker enum sous forme de chaîne dans la base de données

c# dapper enums orm

Question

J'expérimente avec Dapper. J'ai une classe qui a un enum et les valeurs sont stockées en tant que chaînes dans la base de données.

Cela fonctionne avec FluentNHibernate en utilisant GenericEnumMapper

Est-il possible de faire la même chose avec Dapper?

Réponse acceptée

Ceci n'est pas intégré pour le moment, il y a une solution proposée ici: http://code.google.com/p/dapper-dot-net/issues/detail?id=24 sur laquelle nous devons encore nous décider . J'aime l'idée de convertisseurs de type extensibles

Pour ce faire, la méthode la plus propre consiste à définir la propriété shadow, par exemple:

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

Réponse populaire

De l'exemple de code que je viens d'essayer, il semble que non. Vous pouvez mapper une énumération à sa valeur entière sous-jacente, mais si vous essayez de la mapper à sa valeur de chaîne, une DataException est lancée.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi