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

本文关键字:数据库 存储 字符串 枚举 | 更新日期: 2023-09-27 17:58:01

我正在试验dapper。我有一个类,它有一个枚举,值以字符串的形式存储在数据库中。

这与使用GenericEnumMapper 的FluentHibernate配合使用

Dapper也可以这样做吗?

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

这不是目前内置的,这里有一个建议的解决方案: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

从我刚刚尝试的示例代码中,它似乎不是。可以将枚举映射到其基础整数值,但如果尝试将其映射到其字符串值,则会抛出DataException

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

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

使用Dapper 映射Uri字段