[Entity-framework] Удаление объекта и всех его связанных объектов в Entity Framework


Answers

в этой статье Алекс Джеймс (который публикует свой ответ), имеет полную статью по этой теме.

http://blogs.msdn.com/b/alexj/archive/2009/08/19/tip-33-how-cascade-delete-really-works-in-ef.aspx

EF отвечает за правильность ObjectContext после SaveChanges (). Таким образом, EF пытается синхронизировать объект ObjectContext с ожидаемым состоянием базы данных после ожидаемого каскада в базе данных. Скажем, это означает, что если вы откроете что-то вроде SqlProfiler, вы заметите, что EF выдаёт DELETE-запросы для зависимых объектов, которые он знает (то есть, которые загружаются в ObjectContext), когда принципал удален. По существу, здесь происходит то, что Entity Framework ожидает, что удаление принципала в базе данных удалит все его иждивенцы в базе данных. Поэтому он выдает, что должно быть, избыточный DELETE, чтобы запросить себя, чтобы уже загруженные иждивенцы были удалены из ObjectContext. Главное отметить, что EF не извлекает все зависимые объекты и не удаляет их: они удаляют только иждивенцы, которые уже находятся в памяти.

Question

Кто-нибудь знает, как удалить объект и все связанные с ним объекты внутри EF без ручного перемещения графа объектов и удаления каждого из них?

Например, у меня есть SalesOrder и SalesOrderDetails с соотношением 1: N между ними. Когда я удаляю SalesOrder, я хочу, чтобы все SalesOrderDetails были удалены автоматически.

Возможно ли это в EF?