У меня была эта проблема с вызовом функции, а также с таблицей. Для столбца таблицы я изменил тип. NET на удвоение и обработал преобразование - до сих пор у меня не было проблем с точностью.
Мой обходной путь для вызова функции заключается в следующем:
var command = "some_oracle_function(:first_parameter)";
var xx = context.Database.SqlQuery<string>(command, firstParameter).SingleOrDefault();
var oracleDecimal = new OracleDecimal(xx);
return oracleDecimal.IsNull ? 0 : OracleDecimal.SetPrecision(oracleDecimal, 28).Value
Я вынуждаю ответ в виде строки и генерирую новый OracleDecimal - это позволяет большое десятичное число с переполнением - тогда я приведу его до обрабатываемого размера в рамках. NET и возвращают действительное десятичное значение. Это работало без проблем для меня в течение некоторого времени.