1

从父实体集合中删除子实体时,我注意到 EF 将子实体状态设置为修改而不是删除。

实体对象管理器中是否有另一个属性将其设置为删除?

下面是我在 EF 存储库中的 Save 方法中使用的代码,用于查找任何已修改的子项,然后将其删除。

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

我遇到的问题是试图检测更新和删除之间的区别,因为两者的状态都设置为修改。目前,当我更新记录时,它正在删除该项目。我可以在两种状态之间进行检测吗?

4

1 回答 1

0

EF 说该对象被修改而不是被删除,因为从父集合中删除它是在修改它,而不是删除它。要删除它,请使用DeleteObject()包含要删除的对象的对象集上的方法,例如:

myObjectContext.StockTransferItems.DeleteObject(stockTransferItemToDelete);
于 2012-02-17T12:21:37.220 回答