【发布时间】:2010-03-12 15:08:19
【问题描述】:
我开始使用 Entity Framework 4,并准备编写 WPF 演示应用程序以更好地学习 EF4。我的 LINQ 查询返回 IQueryable<T>,我知道我可以使用以下代码将它们放入 ObservableCollection<T>:
IQueryable<Foo> fooList = from f in Foo orderby f.Title select f;
var observableFooList = new ObservableCollection<Foo>(fooList);
此时,我可以将视图模型上的适当属性设置为可观察集合,我将获得视图和视图模型属性之间的 WPF 数据绑定。
这是我的问题:当我将我的 foo 列表移动到可观察集合时,我会破坏 ObjectContext 吗?或者换一种说法,假设我正在正确处理我的 ObjectContext,EF4 会正确更新模型(和数据库)吗?
我问的原因是:NHibernate 在集合级别跟踪对象。如果我将 NHibernate IList<T> 移动到可观察的集合中,它会破坏 NHibernate 的更改跟踪机制。这意味着我必须做一些非常复杂的对象包装才能让 NHibernate 与 WPF 一起工作。我将 EF4 视为一种免除所有这些的方法。
那么,要让 EF4 与 WPF 一起工作,是否就像将我的 IQueryable<T> 结果放入 ObservableCollection<T> 一样简单。这会保留对我的 EDM 实体对象的更改跟踪吗?感谢您的帮助。
【问题讨论】:
标签: wpf entity-framework mvvm