EF: добавление нового элемента в коллекцию и уведомление всех других коллекций о добавлении нового элемента - PullRequest
0 голосов
/ 28 марта 2012

Не скажем, что у нас есть несколько страниц, которые извлекают элементы из одного и того же EntitySet. Если я добавляю новый объект на одной странице, мне нужно добавить его как в коллекцию EntitySet, так и в myCollection:

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

Как лучше всего уведомить другие страницы о том, что новый элемент добавлен (или удален)? Редактирование объекта не является проблемой, поскольку все страницы получают уведомление об изменении без каких-либо проблем.

1 Ответ

0 голосов
/ 30 марта 2012

Вместо привязки к различным экземплярам IEnumerable<T> myCollection, рекомендуемый подход заключается в привязке непосредственно к Context.EntitySet<T>.EntitySet<T> реализует INotifyCollectionChanged и INotifyPropertyChanged интерфейсы.При привязке к одному и тому же экземпляру 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> напрямую.

...