将枚举存储为数据库中的字符串

时间:2011-05-31 19:26:00

标签: c# orm enums dapper

我正在试验小巧玲珑。我有一个具有枚举的类,值存储为数据库中的字符串。

这适用于使用GenericEnumMapper的FluentNHibernate

是否可以对Dapper做同样的事情?

3 个答案:

答案 0 :(得分:13)

目前还没有内置,这里有一个建议的解决方案:http://code.google.com/p/dapper-dot-net/issues/detail?id=24我们尚未决定。我喜欢可扩展类型转换器的想法

最简单的方法是定义阴影属性,例如:

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 :(得分:2)

从我刚试过的示例代码中看来并非如此。您可以将枚举映射到其基础整数值,但如果您尝试将其映射到其字符串值,则会抛出DataException

答案 2 :(得分:0)

另一个解决方案可能是使用新的ITypeMap可扩展性,尽管实现起来仍然有点冗长。

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

Map a Uri field using Dapper