Прежде чем анализировать каждую строку из результата запроса, Dapper использует метод GetFieldType из класса SqliteDataReader, чтобы получить правильные типы столбцов.
Представьте себе следующую таблицу:
Код: Выделить всё
Id | MinTemp | MaxTemp
1 | 10.5 | 18.2
2 | 10.6 | 20
Система .Int64 для Id и System.Double для MinTemp и MaxTemp
Это кажется правильным, но при анализе результатов в строке 2 возникает следующая ошибка
Ошибка анализа столбца 10 (MaxTemp=20 - Int64)
Невозможно привести объект типа «System.Int64» к типу «System.Double».
Благодаря системе динамических типов SQLite тип MaxTemp в строке 2 меняется на System.Int64. Но поскольку dapper определил тип MaxTemp для удвоения, это приводит к ошибке, упомянутой выше.
Если я изменю значение MaxTemp в своей базе данных sqlite на 20.00001, проблема будет устранена, но это неверно.
Используемые пакеты:
"Microsoft.Data.Sqlite": "1.0.0"
Кто-нибудь знает, как решить эту проблему?
Подробнее здесь: https://stackoverflow.com/questions/399 ... ype-system