Я начинаю работу с 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? Спасибо за вашу помощь.
Это замечательно! Благодарю. –
+1 но, к сожалению, для него требуется волшебная строка для entitySetName - делает рефакторинг жестким. – Stuart