Wpf WCF RIA';s对EntityFramework进行了更改

Wpf WCF RIA';s对EntityFramework进行了更改,wpf,silverlight-4.0,entity-framework-4,wcf-ria-services,Wpf,Silverlight 4.0,Entity Framework 4,Wcf Ria Services,我目前正在将一些代码从Silverlight/WCF RIA服务转换为WPF/Entity框架。代码库广泛使用了RIA域上下文的属性。视图将绑定到此属性以确定按钮状态。例如,表单将绑定到此HasChanges属性,每当用户更改DomainContext中任何实体的任何属性时,HasChanges将变为true,并启用保存和放弃按钮 在做了一些研究之后,很明显EF在ObjectContext上没有等效的HasChanges属性。有人对如何在实体框架内复制此功能有什么聪明的想法吗 我认为这些是此类房

我目前正在将一些代码从Silverlight/WCF RIA服务转换为WPF/Entity框架。代码库广泛使用了RIA域上下文的属性。视图将绑定到此属性以确定按钮状态。例如,表单将绑定到此
HasChanges
属性,每当用户更改
DomainContext
中任何实体的任何属性时,
HasChanges
将变为true,并启用保存和放弃按钮

在做了一些研究之后,很明显EF在
ObjectContext
上没有等效的
HasChanges
属性。有人对如何在实体框架内复制此功能有什么聪明的想法吗

我认为这些是此类房产的重要特征:

  • 此新的
    HasChanges
    属性将 当任何属性 加载到数据库中的任何实体
    ObjectContext
    更改
  • HasChanges
    将变为false 每当
    SaveChanges
    方法 成功地调用了
    ObjectContext
  • HasChanges
    属性抛出
    PropertyChanged
    查看的事件 将捕获以进行更新 按钮状态/等

  • 有人有什么想法吗?可能是自定义ADO.NET EntityObject生成器?

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

    检查更改

  • 创建上下文的实例
  • ApplyChanges()从模型到上下文
  • 检查context.HasChanges()
  • 使用(var context=new myenties())
    {
    context.MyTable.ApplyChanges(myTableInstance);
    返回context.HasChanges();
    }


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

    感谢您的输入,但是此解决方案缺少RIA HasChanges的功能,即当实体上的属性发生更改时,不会触发任何事件。在您的解决方案中,您似乎必须“轮询”上下文并询问是否有任何更改。我想我所追求的是一个我可以订阅的上下文事件,每当图中任何实体的属性发生更改时都会触发该事件。您使用的是什么类型的实体?标准EF实体、POCO或自跟踪?如果您使用的是POCO或自跟踪,那么一个选项是修改T4模板以引发此类事件。如果有人对此感兴趣,Rune对如何在该链接中实现这一点有很好的想法:
        using (var context = new MyEntities())
        {
            context.MyTable.ApplyChanges(myTableInstance);
            return context.HasChanges();
        }