WCF RIA的EntityFramework的HasChanges

时间:2011-06-21 17:36:25

标签: wpf silverlight-4.0 entity-framework-4 wcf-ria-services

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

在做了一些研究后,显然EF在HasChanges上没有等效的HasChanges属性。有没有人对如何在Entity Framework中复制这个功能有任何聪明的想法?

我认为这些将是这种财产的重要特征:

  1. 这个新的ObjectContext属性会 无论什么财产,都会变得真实 任何加载到的实体 HasChanges更改。
  2. ObjectContext会变错 只要HasChanges方法是 成功呼吁 SaveChanges
  3. ObjectContext属性会抛出一个 HasChanges事件哪个视图 会抓住以便更新 按钮状态/等。
  4. 有人有什么想法吗?也许是自定义的ADO.NET EntityObject Generator?

1 个答案:

答案 0 :(得分:0)

我有同样的问题。解决方案不太理想,但它的工作原理。另请注意,我在WPF应用程序中使用自我跟踪实体。

检查更改

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

    即使对象图也适用。