Database.SqlQuery(Of Decimal)(sql.tostring) терпит неудачу, если нет результатов запроса

У меня есть простой максимальный запрос:

sql.Append("Select Max(myID) from MyTable")

Затем я выполняю в своем контексте БД, используя структуру сущности

ctx.database.SqlQuery(Of Decimal)(Sql.ToString)

Это работает нормально, если выбор создает значение. Однако, когда запрос ничего не возвращает, я получаю всевозможные проблемы с кастингом. Я пытался использовать «FirstOrDefault» и «DefaultIfEmpty», но все еще получаю ошибки, такие как «Приведение к типу значения« System.Decimal »не удалось, потому что материализованное значение равно null. Либо общий параметр типа результата, либо запрос должен использовать тип, допускающий значение NULL. "

Я понимаю, что нет никакой ценности, поэтому бросок ломается, но я не могу найти решение. Любая помощь приветствуется.


person TreK    schedule 03.02.2014    source источник


Ответы (1)


Похоже, он пытается вставить Null в Decimal. Попробуйте использовать десятичную дробь с нулевым значением...

ctx.database.SqlQuery(Of Decimal?)(Sql.ToString)
person Anthony Chu    schedule 03.02.2014