有几种方法可以撤消 Entity Framework 中的更改:
- 重新创建对象上下文
- 从上下文中分离/附加
- 刷新:context.MyEntity.Context.Refresh(RefreshMode.StoreWins, myobject);
该应用程序有一个选项卡式界面,其中一个选项卡显示不同的实体对象。用户可以将标签添加到对象(m:n 关系)。我尝试了我能找到的一切,我无法让实体框架撤消用户对 m:n 关系所做的更改。例如,用户添加标签(创建 m:n 对象)。如果用户单击“取消”,则应将对象保存到数据库中。
重新创建上下文可能会导致其他选项卡中的数据丢失。Detach/Attach and Refresh() 仅在对象本身已更改且没有从对象列表中添加/删除的相关对象时才有效。
我曾考虑为每个选项卡使用不同的上下文对象,但这会导致数据不同步(例如,用户单击列表并打开一个新选项卡。更改对象后,列表不会更新自动地)