LINQ-to-SQL - Нулевое значение не может быть назначено члену с типом - PullRequest
2 голосов
/ 02 июня 2011

У меня проблема с запросом LINQ, над которым я работаю. Некоторое время это прекрасно работало, но мы сделали откат базы данных, и теперь это не работает.

По сути, я вставляю новую строку в таблицу с автоматическим созданием BigInt PK. Но при вызове SubmitChanges я получаю эту ошибку:

Нулевое значение не может быть назначено член с типом System.Int64, который является необнуляемый тип значения

Я посмотрел на сгенерированный SQL, и проблема, похоже, вращается вокруг этого после вставки:

ВЫБРАТЬ КОНВЕРТ (BigInt, SCOPE_IDENTITY ()) AS [значение]

Кажется, это возвращает ноль, но я понятия не имею, почему. И таблица, и LINQ dmbl настроены правильно для автогенерации ПК.

Есть идеи?

РЕДАКТИРОВАТЬ: После некоторой отладки, включая попытки вставки вручную в SQL, как кто-то любезно предложил, я наткнулся на очень странную проблему -

'Невозможно обновить столбец или выражение' Выдающиеся ''

Выдающимся является ненулевое десятичное (9,2) поле

1 Ответ

3 голосов
/ 02 июня 2011

Взгляните на эту ветку - у кого-то была такая же ошибка, как и у вас, такая же ситуация.Оказывается, возникла проблема с запуском фактической вставки, в результате чего запись не была вставлена.Затем, когда был вызван SCOPE_IDENTITY(), он вернул значение NULL, поскольку запись не была вставлена.

Попробуйте выполнить прямое Insert с теми же значениями в таблице через инструмент управления Sql и посмотрите, вставляет ли строкадолжным образом.Это может быть связано с какой-то другой проблемой (помимо автогенерации PK), которая может быть основной причиной проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...