【发布时间】:2017-08-29 14:45:28
【问题描述】:
我刚刚开始使用 Dapper.Contrib 来帮助我进行插入和获取,但是由于我的枚举作为字符串存储在数据库中(出于多种原因),我在插入时遇到了问题。 Dapper 在读取时与字符串枚举无缝协作,但插入总是会将序数值放入数据库。
为此,我已经阅读了许多向 Dapper 提出的建议,并且打开了很多问题,但没有找到可行的解决方案。我的简化类如下所示:
public class Person {
public long Id { get; set; }
public string Name { get; set; }
public Gender Gender { get; set; }
}
public enum Gender { Female, Male, TransWoman, TransMan }
我希望我可以配置 Dapper.Contrib 以使用枚举名称而不是序号值发出插入,这样下面的代码就会神奇地工作并在 varchar(20) 数据库字段性别中插入“男性”:
void InsertPersonFelipe(SqlConnection conn) {
var person = new Person { Name = "Felipe", Gender = Gender.Male };
conn.Insert(person);
}
有没有办法为typeof(Gender) 添加自定义映射?
或者,更好的是,Dapper.Contrib 是否提供了一种配置以使其使用枚举名称而不是它们的序数值?
【问题讨论】:
-
嘿@Loudenvier,你找到办法了吗?
-
@rsilva 我已经放弃了这个,并且开始手动编写我的插入而不是使用 Dapper.Contrib,然后我只使用我的枚举 ToString 方法......它不是这样的对我来说很重要,但如果有人回答这个会很好;-)
-
感谢您的回复@Loudenvier!
标签: c# enums dapper dapper-contrib