EF 4: Удаление дочернего объекта от набора не удаляет его - почему?

Я использую Платформу Объекта 4, и у меня есть родитель - дочернее отношение с набором "Каскадного удаления". Таким образом, я ожидал бы, когда я удаляю ребенка из родителя, что дочерний элемент удален, когда я называю SaveChanges ().

        cuRepository.Attach(_controlUnit);
        foreach (var recipe in recipes) {
            _controlUnit.Recipes.Remove(recipe);
            //repository.DeleteObject(recipe);
        }

Вместо этого я получаю ошибку:

Система. InvalidOperationException произошел отказавшая операция Message=The: отношения не могли быть изменены, потому что один или несколько свойств внешнего ключа не допускающий NULL-значения. Когда изменение внесено в отношения, связанное свойство внешнего ключа установлено на нулевое значение. Если внешний ключ не поддерживает нулевые значения, новые отношения должны быть определены, свойству внешнего ключа нужно присвоить другое ненулевое значение, или несвязанный объект должен быть удален.

Когда я явно удаляю дочерние элементы (см., прокомментировала строка), все в порядке. Что я пропускаю?

33
задан BNL 6 December 2011 в 19:05
поделиться

2 ответа

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

28
ответ дан 27 November 2019 в 17:57
поделиться

добавить context.DeleteObject(recipe) внутри цикла

11
ответ дан 27 November 2019 в 17:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: