Almacenar enum como cadena en la base de datos

c# dapper enums orm

Pregunta

Estoy experimentando con Dapper. Tengo una clase que tiene una enumeración y los valores se almacenan como cadenas en la base de datos.

Esto funciona con FluentNHibernate usando GenericEnumMapper

¿Es posible hacer lo mismo con Dapper?

Respuesta aceptada

Esto no está incorporado en este momento, aquí hay una solución propuesta para esto: http://code.google.com/p/dapper-dot-net/issues/detail?id=24, que todavía tenemos que decidir sobre . Me gusta la idea de los convertidores de tipo extensible

Tal como está, la forma más limpia de hacerlo sería definir la propiedad de sombra, por ejemplo:

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

Respuesta popular

Del código de muestra que acabo de probar, parece que no. Puede asignar una enumeración a su valor entero subyacente, pero si intenta DataException a su valor de cadena, se lanza una DataException .



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow