C # Почему Linq выдает сбой из-за значения Null, если значение не равно NULL? - PullRequest
4 голосов
/ 07 марта 2012

У меня есть простая ссылка на три таблицы.Это выглядит достаточно просто.Ассоциации там создаются в DBML.На самом деле они не являются внешними ключами в определении таблицы.Зачем?Это длинная история.Поверьте мне, когда я говорю, я сражался в этой битве и проиграл.

enter image description here

Когда я пытаюсь добавить новую запись FileType с помощью LINQ, она вылетает с ошибкой: Невозможно вставить значение NULL в столбец Id, таблица FileType.

            _fileType = new FileType()
            {
                Id = def.ID, // This is the integer "1"
                Name = def.Name,
                FileCategoryId = def.Category.ID,
                DateLabel = def.DateLabel,
                FileNamePrefix = def.Prefix,
                FolderName = def.Folder,
                CreateInspection = 0
            };

            try
            {
                dc.FileTypes.InsertOnSubmit(_fileType);
                dc.SubmitChanges();
            }
            catch (Exception ex) 
            {
                MessageBox.Show(ex.Message); 
            }

Но если вы заметите код, Id устанавливается.Я проверил значение, и оно не является нулевым.Это целое число.Что я пропускаю или делаю неправильно ??

Я проверил, чтобы убедиться, что запись FileCategory с правильным идентификатором существует.Что-то еще мне не хватает?

Ответы [ 2 ]

2 голосов
/ 07 марта 2012

Я видел нечто подобное раньше.

Это происходит, когда вы назначаете только «идентификатор», а не связанный объект.

Попробуйте следующее:

new FileType
{
  FileCategory = def.Category,
  ...
}
0 голосов
/ 28 марта 2012

В отображении таблицы помечено ли поле как «Автоматически сгенерированное значение» на панели «Свойства»?У меня были проблемы с вставкой / обновлением этого раньше ... - Тисон Т. 7 марта в 6: 52

Я бы дал ему реквизиты для этого, но он оставил это как комментарий,и не официальный ответ.

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