我开始使用 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);
那时,我可以将 View 模型上的适当属性设置为可观察集合,我将获得 View 和 View 模型属性之间的 WPF 数据绑定(bind)。
这是我的问题:当我将我的 foo 列表移动到可观察集合时,我会破坏 ObjectContext 吗?或者换一种说法,假设我正在正确处理我的 ObjectContext,EF4 会正确更新模型(和数据库)吗?
我问的原因是:NHibernate 在集合级别跟踪对象。如果我移动 NHibernate
IList<T>
对于可观察的集合,它破坏了 NHibernate 的更改跟踪机制。这意味着我必须做一些非常复杂的对象包装才能让 NHibernate 与 WPF 一起工作。我将 EF4 视为一种免除所有这些的方法。那么,要让 EF4 与 WPF 一起工作,是否就像删除我的
IQueryable<T>
一样简单?结果为ObservableCollection<T>
.这会保留对我的 EDM 实体对象的更改跟踪吗?谢谢你的帮助。
最佳答案
您需要将 ObservableCollection 与 ObjectContext 同步。如何做到这一点显示了 的 BookLibrary 示例。 WPF Application Framework (WAF) .寻找 EntityObservableCollection。
关于wpf - WPF 是否会破坏 Entity Framework ObjectContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2433591/