Dapper требователен к типам, которые он отображает.Это защищает вас от всевозможных неприятных ошибок, которые появляются позже.
Например, ваша БД может вернуть:
010hello
10a10
374837483748374837483748374834784378437438743874384738473
Нет четкого плана действий для сопоставления такого рода вещей с Int32
Тем не менее, есть две стратегии, которым вы можете следовать с помощью dapper, которые не требуют изменений в генерации IL.
Опция 1: свойство Shadow
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, если вы сделаете это, вы застрянете, нуждаясь в слиянии любых исправлений, которые мы со временем добавим в вашу локальную копию.