Как выполнить каскадное удаление с EF4? - PullRequest
2 голосов
/ 07 января 2011

В предыдущем проекте EF4 выполнял каскадное удаление (удалите родительскую запись, и дочерние записи также будут удалены).В этом проекте (другая компания) EF4 не выполняет каскадное удаление.Что мне нужно сделать, чтобы EF4 выполнил каскадное удаление?

Ответы [ 3 ]

4 голосов
/ 07 января 2011

Использование только каскадного удаления EF4 недостаточно;вам следует также установить каскадные удаления в вашей базе данных, если не все дочерние объекты загружены в контекст объекта.При этом свойства каскадного удаления устанавливаются для ассоциации.Перейдите в браузер модели, выберите ассоциацию и просмотрите свойства.

0 голосов
/ 17 января 2011

У вас есть два способа реализации каскадного удаления:

  1. Установите его на уровне базы данных (триггеры или отношения)
  2. Попробуйте использовать методы расширения.Вы можете определить логику удаления для текущей таблицы и вызвать методы для обновления связанной таблицы.
0 голосов
/ 17 января 2011

Я на одной лодке.У меня есть только каскад на удаление в EDM / EF4 и нет (пока) в базе данных.Попробуйте это ...

В отношении установите для OnDelete конца родительского элемента (1 кратность) значение Cascade.Затем в вашем коде загрузите все дочерние элементы перед сохранением изменений (удаление).

var parent = context.Parents.SingleOrDefault(p => p.Id == parentId);
parent.Children.Load();
if (parent != null)
        {
            context.Parent.DeleteObject(parent);
            context.SaveChanges();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...