Store enum as string in database

后端 未结 3 756
隐瞒了意图╮
隐瞒了意图╮ 2021-02-01 22:59

I am experimenting with dapper. I have a class which has an enum and the values are stored as strings in the database.

This works with FluentNHibernate using GenericEnum

相关标签:
3条回答
  • 2021-02-01 23:02

    Another solution could be to use the new ITypeMap extensability although it is still a bit verbose to implement.

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

    Map a Uri field using Dapper

    0 讨论(0)
  • 2021-02-01 23:12

    From the sample code I've just tried, it appears not. You can map an enum to its underlying integer value, but if you try to map it to its string value, a DataException is thrown.

    0 讨论(0)
  • 2021-02-01 23:26

    This is not built in at the moment, there is a proposed solution for this here: http://code.google.com/p/dapper-dot-net/issues/detail?id=24 which we are yet to decide on. I like the idea of extensible type converters

    As it stands the cleanest way to do this would be to define shadow property eg:

    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
    
    0 讨论(0)
提交回复
热议问题