WPF + EF:绑定实体并跟踪来自不同上下文的更改

时间:2015-05-27 00:04:34

标签: c# wpf entity-framework binding

我有一个使用Entity Framework的WPF应用程序和两个视图:

  • ProductsListView
  • ProductEditView

考虑以下情况:

  1. 打开 ProductListView :实例化DbContext,填充产品列表,关闭 DbContext
  2. 用户选择产品并单击编辑按钮。
  3. 打开 ProductEditView :实例化DbContext,产品按其ID加载,填写字段并关闭 DbContext
  4. 用户更改字段并单击保存按钮:实例化 DbContext ,产品由其ID加载,应用更改并且 DbContext 为闭合。
  5. 如何通知产品列表中所选产品的绑定?

    在内存环境中:

    1. 我只是将产品对象从 ProductListView 传递到 ProductEditView
    2. 我将字段绑定到 ProductEditViewModel 属性,
    3. 点击保存按钮后,我会更新产品参考。
    4. 由于它是相同的参考,我不需要对产品列表做任何事情 更新。

      我不知道如何使用EF上下文做同样的事情。

      任何sugestions?

1 个答案:

答案 0 :(得分:1)

在EF上下文中,我建议你在所有4个动作中保留DbContext。这将为您节省很多麻烦。

除非您的产品数据非常大并且您只检索标题和ID,请在初始列表提取中说明,然后在打开 EditView 时保持相同的DbContext打开,直到它们关闭它。如果他们保存,EF会找到更改。

它通过将从数据库中检索的值与当前设置为实体的值进行比较来查找更改。通过关闭实体上下文,您将摆脱OriginalValues