改变实体状态

entity-framework

我目前有一个带有一堆已删除项目的实体模型,状态被删除。有没有办法“取消删除”他们?我知道我想取消删除哪些项目,但我不知道如何取消删除这些项目。理想情况下,我想让它恢复到未改变的状态。

一般承认的答案

您是否可以选择不提交连接上下文? - 在不调用objectContext.SaveChanges()的情况下释放ObjectContext;当然,如果你有一些你不会保存的变化,它们也不会持续存在。

如果您调用了objectContext.DeleteObject(x) ,则无法objectContext.DeleteObject(x)删除它并仍然保存更改。

ObjectStateEntry objectStateEntry = objectContext.ObjectStateManager.GetObjectStateEntry(x);

// objectStateEntry.State is not setable 

ObjectStateEntry确实具有OriginalValues属性,因此理论上,您可以精心地重新创建一个表示原始更改的集合,减去不需要的更改,退出objectContext,打开一个新的并重建那些更改,减去那些不需要的更改。可能不值得麻烦,但目前还没有记录的方法可以取消标记删除的内容。


热门答案

你打电话之后

objectContext.DeleteObject(x)

你可以模拟对象x的反删除

objectContext.Detach(X); objectContext.Attach(x)的



Related

许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因