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

Entity framework 实体框架-代码优先,DbSet.Local未在UI中更新,entity-framework,binding,entity-framework-ctp5,Entity Framework,Binding,Entity Framework Ctp5,我有一个代码优先,CTP5数据上下文。我有一个带有DataGrid的WPF应用程序。我将其DataContext设置为: dataGrid.DataContext = _context.Customers.Local; 然后我使用 _context.Customers.Add(customer1); and so on _context.SaveChanges(); 然后,我将这些客户(客户列表)交给另一个类来处理它们 customerUpdater.Update(customers);

我有一个代码优先,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中看不到这些更新!我所看到的只是原始的客户名单。本地是一个可观察的集合,所以我不明白为什么我没有在UI中看到更新


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

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

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


好吧,那么就没有办法避免INotifyPropertyChanged的样板代码了?我不想把时间花在为每一处房产写这些东西上。我认为这就是ObservableCollection的要点,它自动实现INotifyPropertyChanged,并为我处理所有事情,包括通知某个属性是否在其某个项中发生更改?因为ObservableCollection可以保存任何类型的项,我认为,在每次为每个可能的类更改属性时抛出通知(可能您不希望某些属性抛出通知)应该不太实际,因此实现接口并选择特定属性将通知其更改的位置似乎是最佳选择。