Entity framework 撤消实体框架中的更改,包括更改为对象引用
有几种方法可以撤消实体框架中的更改:Entity framework 撤消实体框架中的更改,包括更改为对象引用,entity-framework,Entity Framework,有几种方法可以撤消实体框架中的更改: 重新创建对象上下文 从上下文中分离/附加 刷新:context.MyEntity.context.Refresh(RefreshMode.StoreWins,myobject) 应用程序有一个选项卡式界面,其中一个选项卡显示不同的实体对象。用户可以向对象添加标记(m:n关系)。我尝试了我能找到的一切,但我无法得到EntityFramework撤消用户对m:n关系所做的更改。 例如,用户添加了一个标记(创建了m:n对象)。如果用户单击“取消”,则对象应保存
- 重新创建对象上下文
- 从上下文中分离/附加
- 刷新:context.MyEntity.context.Refresh(RefreshMode.StoreWins,myobject)李>
我曾考虑为每个选项卡使用不同的上下文对象,但这会导致数据不同步(例如,用户单击列表并打开一个新选项卡。更改对象后,列表不会自动更新)EF中没有撤消更改。您当前的问题更多地是关于应用程序的工作方式以及EF的工作方式。EF应该作为一个工作单元工作——您做了很多更改,要么一起保存,要么一起扔掉 您的应用程序显然需要不同的模型,因为您只需要恢复部分更改。这并不是EF的上下文应该处理的。此类逻辑应与EF分开处理=您的gui应处理未连接到上下文的对象,并且您应仅在用户决定保存结果时连接实体并定义更改 上下文中的部分撤消要求您浏览
ObjectStateManager
中的条目并还原创建的更改。对于已更改的多对多关系,您必须找到表示关系的状态条目并还原状态更改。这些条目只能处于“已添加”、“已删除”或“未更改”状态。您可以将“已删除”移回“未更改”,但我目前不确定您是否可以以某种方式分离或删除添加的实例。我认为您是对的。我试图撤销的“工作单元”对于EF来说太复杂了,无法处理。我更改了应用程序,为每个新选项卡使用不同的上下文。所以我现在唯一要解决的就是如何刷新父列表。但这更像是WPF的事情。。。