Entity Framework: удалить запись с ее вложенными записями - PullRequest
2 голосов
/ 26 сентября 2010

У меня есть таблица с 3 столбцами: ID, Name, ParentID.

Как удалить конкретную запись со всеми ее дочерними элементами (глубиной n уровней)?

Использование Entity Framework 3.5.

Ответы [ 3 ]

5 голосов
/ 26 сентября 2010

То, что таблица является самоссылкой, является логикой приложения, она не выражена в определении SQL и, следовательно, не понимается EF.

Чтобы удалить эти записи через EF, вам нужно написать подпрограмму, которая начинается сверху и загружает все подпункты. Затем пометьте все эти элементы как удаленные, затем вызовите изменения сохранения.

Чтобы удалить элемент:

context.DeleteObject(item);
context.SaveChanges();
2 голосов
/ 26 сентября 2010

В SQL Установите отношение базы данных к каскадному удалению, а затем перестройте EDMX.

1 голос
/ 26 сентября 2010

@ Шивеш - я предлагаю вам использовать небольшой метод, реализованный с помощью рекурсии , чтобы удалить сына и всех его родителей.Таким образом, если у родителя есть родители, вы также можете удалить их и т. Д.

Альтернативой может быть реализация хранимой процедуры, соответствующей ссылки в EntityFramework, и довольно то же самое.Надеюсь, это поможет,

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