EF:在集合中添加新项目并通知所有其他集合添加了新项目

时间:2012-03-28 15:45:18

标签: entity-framework-4 wcf-ria-services

为免我们说有几个页面可以从同一个EntitySet中检索项目。如果我在一个页面上添加一个新实体,我需要将它添加到EntitySet集合和myCollection:

Context.EntitySet.Add(item);
myCollection.Add(item);

通知其他网页添加(或删除)新项目的最佳方法是什么?编辑实体没有问题,因为所有页面都会毫无问题地获得更改通知。

1 个答案:

答案 0 :(得分:0)

建议的方法是直接绑定到IEnumerable<T> myCollection,而不是绑定到Context.EntitySet<T>的不同实例。 EntitySet<T>实现INotifyCollectionChangedINotifyPropertyChanged接口。当您绑定到EntitySet<T>的同一个实例时,可以通过响应EntitySet<T>.CollectionChanged事件向每个页面通知更改。例如:

// Page 1
_myCollection = Context.EntitySet<MyItem>();
_myCollection.CollectionChanged += MyItemsChanged;

...

// Page 2
_myCollection = Context.EntitySet<MyItem>();
_myCollection.CollectionChanged += MyItemsChanged;

当任何页面从集合中添加或删除时,将通知所有页面。

关于您的评论,IEnumerable<T>未实现INotifyCollectionChanged界面,也未发布任何更改通知。最好的结果来自直接使用EntitySet<T>