Linq to SQL "Невозможно вставить значение NULL", когда NOT NULL! - PullRequest
2 голосов
/ 28 июня 2011

Мне очень нужна помощь.Я провел целый день, когда у меня нет ни одного часа, чтобы тратить на проект.У меня есть слой данных Linq to SQL, и я делаю простую вставку в БД, используя следующий код:

 using (var odc = new OrdersDataContext())
        {
            try
            {
                var id = GetNextOrderId(odc);
                order.ID = id;
                odc.tblOrders.InsertOnSubmit(order);
                odc.SubmitChanges();
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
            }
        }

Из-за другого унаследованного кода, а это база данных, работающая на SQL 2000, я не могу сделатьизменения базы данных, но этот код работал нормально в какой-то момент, а затем просто перестал работать.Это говорит о том, что:

Невозможно вставить значение NULL в столбец 'ID', таблица 'Order';столбец не допускает пустых значений.INSERT завершается неудачей.

Но, как вы можете видеть из кода и того, что я МОЖНО УВИДЕТЬ, когда я шагаю по коду, столбец ID получает действительный идентификационный номер. По какой-то причине, хотя я устанавливаю поле идентификатора, он пытается вставить его как ноль, хотя этот код работал нормально до .Я зашел так далеко, что полностью восстановил базу данных и перестроил слой данных, но безрезультатно.

Я настолько туп, что и вне времени, что я вне себя.

1 Ответ

1 голос
/ 28 июня 2011

Итак, ответ на этот вопрос очень странный, и я не уверен на 100%, почему.По сути, я полностью перестроил слой данных LINQ to SQL (просто перетаскивая те же таблицы в конструкторе), а затем полностью очистил и перестроил все решение.После этого код волшебным образом снова заработал.Изменение кода не требуется.

По какой-то причине код был неправильно кэширован, и это привело к невозможности передачи объекта на уровень данных (я полагаю).Возвращение в этом случае кажется странной ошибкой.

...