У меня есть следующий код. Я получаю ошибку:
«Приведение к типу значения Int32 не выполнено, поскольку материализованное значение имеет значение NULL. Либо универсальный параметр типа результата, либо запрос должен использовать обнуляемый тип».
когда таблица CreditHistory не имеет записей.
var creditsSum = (from u in context.User
join ch in context.CreditHistory on u.ID equals ch.UserID
where u.ID == userID
select ch.Amount).Sum();
Как я могу изменить запрос, чтобы принимать нулевые значения?
Чтобы разрешить обнуляемое
Amount
поле, просто используйте оператор объединения нулей, чтобы преобразовать нули в 0.источник
int?
первую очередь.Amount
этоint
, то мы уже уверены, что оно не может быть нулевым, и объединение не требуется. Если вы получаете сообщение об ошибке, которое вы сказали, тоAmount
это не обнуляемое значение, а просто значение.int
В этом случае, возможно, вам нужно изменить свой столбец linq2sql dbml в конструкторе, чтобы разрешить нулевые значения.Вы используете
aggregate
функцию, которая не получает элементы для выполнения действия, вы должны убедиться, что запрос linq дает некоторый результат, как показано ниже:источник
Было это сообщение об ошибке, когда я пытался выбрать из представления.
Проблема заключалась в том, что представление недавно получило несколько новых пустых строк (в столбце SubscriberId), и оно не было обновлено в EDMX (сначала база данных EF).
Столбец должен был иметь тип Nullable, чтобы он работал.
var dealer = Context.Dealers.Where (x => x.dealerCode == dealerCode) .FirstOrDefault ();
Перед обновлением просмотра:
После обновления просмотра:
Удаление и добавление представления обратно в EDMX сработало.
Надеюсь, это кому-нибудь поможет.
источник
Я использовал этот код, и он отвечает правильно, только выходное значение обнуляется.
источник
Я вижу, что на этот вопрос уже дан ответ. Но если вы хотите, чтобы он был разделен на два утверждения, можно рассмотреть следующее.
источник
Получил эту ошибку в Entity Framework 6 с этим кодом во время выполнения:
Обновление от LeandroSoares:
Используйте это для одиночного выполнения:
Оригинал:
Поменял на это и тогда все заработало:
источник
Я также столкнулся с той же проблемой и решил с помощью «?» Сделать столбец как обнуляемый. оператор.
Иногда ноль возвращается.
источник