2010-03-12 4 views
1

Я начинаю работу с Entity Framework 4, и я готов написать WPF-демонстрационное приложение, чтобы лучше изучить EF4. Мои LINQ запросы возвращают IQueryable<T>, и я знаю, что могу упасть те в ObservableCollection<T> со следующим кодом:Разве WPF разбивает объект ObjectContext на Entity Framework?

IQueryable<Foo> fooList = from f in Foo orderby f.Title select f; 
var observableFooList = new ObservableCollection<Foo>(fooList); 

В этот момент, я могу установить соответствующее свойство на мой взгляд, модели наблюдаемой коллекции, и я буду получить привязку данных WPF между представлением и видом модели.

Вот мой вопрос: разорвать ли объект ObjectContext, когда я перемещаю свой список foo в наблюдаемую коллекцию? Или иначе, полагая, что я в противном случае правильно обрабатываю свой ObjectContext, правильно ли EF4 обновит модель (и базу данных)?

Причина, по которой я спрашиваю, это: NHibernate отслеживает объекты на уровне коллекции. Если я перемещу NHibernate IList<T> в наблюдаемую коллекцию, он нарушит механизм отслеживания изменений NHibernate. Это означает, что мне нужно сделать очень сложную обертку объектов, чтобы заставить NHibernate работать с WPF. Я рассматриваю EF4 как способ обойти все это.

Итак, чтобы получить EF4, работающий с WPF, это так же просто, как сбросить мои результаты IQueryable<T> в ObservableCollection<T>. Сохраняет ли это отслеживание изменений на объектах объекта EDM? Спасибо за вашу помощь.

ответ

3

Вам необходимо синхронизировать ObservableCollection с ObjectContext. Как это можно сделать, показывает образец BookLibrary WPF Application Framework (WAF). Найдите EntityObservableCollection.

+0

Это замечательно! Благодарю. –

+0

+1 но, к сожалению, для него требуется волшебная строка для entitySetName - делает рефакторинг жестким. – Stuart

Смежные вопросы