Я использую VS2010, Entity Framework 4.0 и Advantage v. 10 в своем приложении. Я написал оператор Linq-to-Entities (L2E), который пытается преобразовать нулевой числовой (десятичный) тип в десятичный. Простой оператор может выглядеть следующим образом:Сущность framework + база преимуществ: преобразование нулевых числовых типов
var x = (from test in entities.Tests
select test.ValueA.HasValue ? test.ValueA.Value : 0);
Однако, я получаю следующее сообщение об ошибке:
System.Data.EntityCommandExecutionException: Произошла ошибка при выполнении определения команды. Подробнее см. Внутреннее исключение. ---> Advantage.Data.Provider.AdsException: ошибка 7200: ошибка AQE: состояние = S0000; NativeError = 2159; [iAnywhere Solutions] [Advantage SQL Engine] Недопустимый аргумент для скалярной функции: CAST - должен указывать как точность, так и масштаб. - Расположение ошибки в инструкции SQL: xxx (строка: x column: x) Ошибка выполнения запроса AdsCommand.
Есть ли способ обойти это без перечисления результатов и выполнения преобразования на стороне клиента? Я не уверен, как рассказать о преимуществах точности и масштаба «0» через инструкцию L2E.
Заранее спасибо.
prob это изменение не работает. Однако вы что-то пробовали. выберите тест. 0 Возможно, мне не хватает роли, но если вы можете это перевести, это может сделать работу. Иногда изменение синтаксиса заставляет работать. – zeeshanhirani
zeeshanhirani, да, я попробовал ??? синтаксис. К сожалению, это не сработало. Использование функции IsNull, предложенная LanceSc, является жизнеспособным решением. Спасибо, в любом случае! – user429994