2016-08-29 2 views
1

Я получаю эту ошибку при попытке вставить новый элемент, но при связывании его с уже созданным (Language) записью:EF - для уже созданного объекта: Невозможно вставить значение NULL в столбец «Id», таблицу «Языки»; столбец не допускает обнуляет

var languageRepository = RepositoryFactory.CreateReadOnly<Language>(); 
    _defaultLanguage = languageRepository.FirstOrDefault(l => l.IsDefault); 

    (...) 

newItem.Images = new List<Image> 
       { 
        new Image 
        { 
          FileName = filename, 
          Language = _defaultLanguage 
        } 
       }; 

В этом случае _defaultLanguage уже существует в базе данных, то я не знаю, почему он пытается вставить его как новую запись, а не просто привязать к уже существующему идентификатору.

Содержание _defaultLanguage:

enter image description here

Любая идея, что может помочь?

+1

Какой тип 'Язык' и, пожалуйста, опубликуйте клавиши изображений, а также клавиши Item. –

+1

вам нужно добавить больше кода, чтобы получить помощь. – Sampath

+0

ваша ошибка относится к таблице Languages, но ваш код относится к таблице изображений. Кажется, что _defaultLanguage - это не то, что вы думаете – mmcrae

ответ

0

CreateReadOnly выглядит подозрительно.

Попробуйте изменить нижнее, чтобы нормальное извлечение.

var languageRepository = RepositoryFactory.CreateReadOnly<Language>(); 

Я считаю, что это Detach(Untracked) извлеченные записи.

+0

Что такое «нормальная экстракция»? –

+0

Я не могу догадаться, как он делает это 'RepositoryFactory', я думаю, что это что-то вроде. .GetRepositoryInstance ()' –

+0

Так почему вы отвечаете на непонятный вопрос? Но как бы вы определили «нормальную добычу»? –

Смежные вопросы

 Смежные вопросы