我刚刚开始使用 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 是否提供了一种配置以使其使用枚举名称而不是它们的序数值?