При использовании Oracle.ManagedDataAccess.Client.OracleDataReader
и последующем вызове reader.GetValue(i)
мы получаем исключение выше.
Это можно смоделировать с помощью этого запроса:
SELECT 1/3 as foo FROM DUAL
Проблема возникает, когда оракулданные относятся к типу Oracle Decimal
, а точность данных превышает количество десятичных разрядов в .NET.И главная проблема в том, что reader.GetValue(i)
делает это, так что вы не можете контролировать тот факт, что он выдает эту ошибку внутренне.
У меня действительно есть обходной путь, который я опубликую как ответ, так как яУдарьте это несколько раз в прошлом, и у Интернета пока нет хорошего ответа.
Связанный:
https://community.oracle.com/thread/4017980
«Указанное приведение недопустимо» при заполнении DataTable из OracleDataAdapter.Fill ()