从父实体集合中删除子实体时,我注意到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
我遇到的问题是尝试检测更新和删除之间的区别,因为状态设置为两者都已修改。目前,我在更新记录时也会删除该项目。我可以在这两种状态之间进行检测吗?
答案 0 :(得分:0)
EF说对象被修改而不是删除,因为从父集合中删除它正在修改它,而不是删除它。要删除它,请在包含要删除的对象的对象集上使用DeleteObject()
方法,如:
myObjectContext.StockTransferItems.DeleteObject(stockTransferItemToDelete);