EF Удалить дочерний объект - PullRequest
1 голос
/ 17 февраля 2012

При удалении дочерней сущности из коллекции родительской сущности я заметил, что EF устанавливает состояние дочерней сущности, которое будет изменено, а не удалено.

Есть ли в менеджере объекта сущности другое свойство, которое устанавливает его для удаления?

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

Dim orphans = DataContextFactory.GetWMSDBContext().ChangeTracker.Entries().Where(Function(e) (e.State = EntityState.Modified) AndAlso TypeOf e.Entity Is StockTransferItem)
For Each orphan In orphans
    orphan.State = EntityState.Deleted
Next

У меня проблемапытается обнаружить разницу между обновлением и удалением, потому что состояние установлено на изменение для обоих.В данный момент он удаляет элемент, когда я также обновляю запись.Могу ли я обнаружить между двумя состояниями?

1 Ответ

0 голосов
/ 17 февраля 2012

EF говорит, что объект изменен, а не удален, потому что удаление его из родительской коллекции изменяет его, а не удаляет.Чтобы удалить его, используйте метод DeleteObject() для набора объектов, который содержит объект, который вы хотите удалить, например:

myObjectContext.StockTransferItems.DeleteObject(stockTransferItemToDelete);
...