我正在使用 dapper 并且在将字符串值从 db 转换为 int 时遇到问题。有没有人覆盖 TypeMap 以允许这样做?
任何建议都会很棒。
Dapper 对它映射的类型很挑剔。这可以保护您免受以后出现的各种令人讨厌的错误。
例如,您的数据库可能会返回:
010hello
10a10
374837483748374837483748374834784378437438743874384738473
将这类东西映射到Int32
也就是说,你可以使用 dapper 遵循两种不需要更改 IL 生成的策略。
选项 1:影子属性
class Foo
{
public int Age
{
get
{
int age;
int.TryParse(ageString, out age);
return age;
}
}
string ageString;
}
\\ usage
cnn.Query<Foo>("select ageString from TableWithString");
选项 2,在 SQL 中强制转换
cnn.Query<Bar>("select cast(ageString as int) Age from TableWithString");
没有干净的方法来扩展 Dapper 中的映射功能,如果这样做,您将需要将我们随时间添加的任何修复程序合并到您的本地副本中。