实体框架 - 代码优先,DbSet.Local不在UI中更新

时间:2011-01-30 14:25:20

标签: entity-framework binding entity-framework-ctp5

我有Code First,CTP5数据上下文。我有一个带有DataGrid的WPF应用程序。我将其DataContext设置为:

dataGrid.DataContext = _context.Customers.Local;

然后我使用

添加一些实体
_context.Customers.Add(customer1); and so on
_context.SaveChanges();

然后,我将这些客户(客户列表)提供给另一个班级,以便对他们进行一些工作。

customerUpdater.Update(customers);

这需要很长时间,并在每个客户工作时更新其属性。 e.g。

foreach(var customer in customers) { customer.Name = "updated name"; }

我在WPF UI中没有看到这些更新!我所看到的只是未经改变的客户的原始列表。 Customers.Local虽然是一个ObservableCollection,所以我不明白为什么我没有在UI中看到更新。

每次发生属性更新时,我都不想调用SaveChanges(),它几乎是不断的。有人能告诉我为什么这不会更新吗?

1 个答案:

答案 0 :(得分:3)

如果Customers.Local是一个observableCollection,并且您更新了其中一个项目的属性“name”,则您没有看到更新,因为您没有修改可观察集合,您正在修改的是属性的值observableCollection中存在的一个项目(客户),但是observableCollection不会向UI发送任何通知,因为它保持不变(它具有相同数量的项目)

如果您希望在更新客户的属性名称时通知UI,则必须使客户类实现INotifyPropertyChanged接口。

http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx