我正在尝试使用 dapper。我有一个类,它有一个枚举,值作为字符串存储在数据库中。
这适用于使用 GenericEnumMapper 的 FluentNHibernate
是否可以对 Dapper 做同样的事情?
目前还没有内置,这里有一个建议的解决方案:http ://code.google.com/p/dapper-dot-net/issues/detail?id=24我们尚未决定. 我喜欢可扩展类型转换器的想法
就目前而言,最干净的方法是定义 shadow 属性,例如:
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
则会抛出 a。
另一个解决方案可能是使用新的 ITypeMap 可扩展性,尽管实现起来仍然有点冗长。