2011-05-31 11 views
16

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

Esto funciona con FluentNHibernate usando GenericEnumMapper

¿Es posible hacer lo mismo con Dapper?

Respuesta

13

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 aún tenemos que decidir. Me gusta la idea de convertidores de tipos extensibles

Tal como está la manera más limpia de hacer esto sería definir la propiedad 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 
+1

Esto funciona. Esperando una solución más integrada. –

2

A partir 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 asignarlo a su valor de cadena, se lanza un DataException.

Cuestiones relacionadas