Как гласит заголовок вопроса, я получаю Specified cast is not valid
исключения, даже если мой сохраненный процесс возвращает int
и DateTime
, и мой класс определяет его одинаково.
public class Foo
{
public int Id {get; set;}
public DateTime CreatedDate {get; set;}
}
Когда я выполняю этот запрос:
var results = connection.Query ("spGetFoo", commandType: CommandType.StoredProcedure);
Я получаю следующие 2 исключения:
InvalidCastException: Specified cast is not valid.
DataException: Error parsing column 1 (Id=1 - Decimal)
InvalidCastException: Specified cast is not valid.
DataException: Error parsing column 2 (CreatedDate=Mar 7 2012 5:52:08:276PM - String)
Если я изменю свойства Foo
с int
на decimal
и DateTime
на string
, он правильно заполнит значения. Но это вводит дополнительный шаг определения другого класса, который содержит правильные типы переменных, а затем сопоставления с Foo
на новый класс.
Я также пытался просмотреть GetTypeDeserializer
в источнике Dapper, чтобы увидеть, что происходит, но я не очень знаком с IL-излучением.