C# 实体框架-刷新而不丢失更改

C# 实体框架-刷新而不丢失更改,c#,wpf,entity-framework,entity-framework-6,C#,Wpf,Entity Framework,Entity Framework 6,我正在尝试实现一种方法,即在处置和重新加载EF6上下文时搁置对它的更改,或者在不丢失更改的情况下刷新上下文 我有很多场景,其中用户正在更新对象上的外键关系,他们需要使用新数据刷新表单上的组合框,而无需重置所有工作 例如: 对象按如下方式启动: Foo.Name = "Joe" Foo.Bar = SomeBar 用户希望将对象更改为 Foo.Name = "Sam" Foo.Bar = NewBar 但是他们不能,因为需要创建NewBar。 因此,用户打开栏创建表单(使用不同的EF上下文)并

我正在尝试实现一种方法,即在处置和重新加载EF6上下文时搁置对它的更改,或者在不丢失更改的情况下刷新上下文

我有很多场景,其中用户正在更新对象上的外键关系,他们需要使用新数据刷新表单上的组合框,而无需重置所有工作

例如: 对象按如下方式启动:

Foo.Name = "Joe"
Foo.Bar = SomeBar
用户希望将对象更改为

Foo.Name = "Sam"
Foo.Bar = NewBar
但是他们不能,因为需要创建
NewBar
。 因此,用户打开
创建表单(使用不同的EF上下文)并创建
NewBar
。当他们返回到
Foo
编辑表单时,他们希望在下拉列表中看到
NewBar
,但它不在那里。他们可以关闭并重新打开表单以查看
NewBar
,但现在他们需要再次将“Joe”更改为“Sam”


我怎样才能绕过这个问题,或者实现一个模式,使它成为一个非问题?

这基本上是一个非问题


我正在使用Messenger通知我的上下文何时需要刷新。

请包含您的代码,以便更好地理解您的问题。@EriawanKusumawardhono我没有一个明确的代码示例可以让这一点更加清楚。它可以归结为在EF上下文从数据库刷新时能够缓存对其所做的更改。您可以尝试从上下文中分离该Foo,然后在再次创建上下文时再次附加该Foo,使其具有旧数据。@FlorimMaxhuni我尝试过类似的方法,但最终不得不手动重新加载表单。在释放上下文时,必须重新加载绑定到该上下文的所有数据,包括Foo。这意味着我必须手动重新填充所有的组合框。我希望能找到一个不那么麻烦的解决方案。您使用的是MVVM模式吗?如果是这样的话,您可以在保存NewBar实体后重新加载条形图下拉列表的数据。