我目前正在将一些代码从 Silverlight/WCF RIA 服务转换为 WPF/ Entity Framework 。代码库广泛使用了 RIA 域上下文的 HasChanges 属性。 View 将绑定(bind)到此属性以确定按钮状态。例如,表单将绑定(bind)到此 HasChanges 属性,并且每当用户更改 DomainContext 内任何实体的任何属性时,HasChanges 将变为 true,并且 Save 和 Discard 按钮将变为启用。

经过一些研究,很明显 EF 在 HasChanges 上没有等效的 ObjectContext 属性。有没有人对如何在 Entity Framework 内复制此功能有任何聪明的想法?

我想这些将是此类属性(property)的重要特征:

  • 这个新的 HasChanges 属性将
    每当
    加载到ObjectContext 更改。
  • HasChanges 将变为 false
    每当 SaveChanges 方法是
    成功调用了ObjectContext
  • HasChanges 属性抛出一个PropertyChanged 事件哪个 View
    会 catch 以便更新
    按钮状态/等。

  • 有人有任何想法吗?也许自定义 ADO.NET EntityObject 生成器?

    最佳答案

    我遇到过同样的问题。解决方案不是很理想,但它有效。另请注意,我在 WPF 应用程序中使用自我跟踪实体。

    检查更改

  • 创建上下文的实例
  • ApplyChanges() 从模型到上下文
  • 检查 context.HasChanges()
  •     using (var context = new MyEntities())
        {
            context.MyTable.ApplyChanges(myTableInstance);
            return context.HasChanges();
        }

    这很有效,即使对于对象图也是如此。

    关于wpf - WCF RIA 的 EntityFramework 的 HasChanges,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6429546/

    10-09 13:39