2010-03-10 76 views
1

我开始使用VS 2010 RC中的EF4使用Entity Framework。到目前为止,我已经完成了一些简单的控制台应用程序,用于创建EDM,使用LINQ to Entities查询它,并将结果输出到控制台。使用MVVM的LINQ to Entity结果

现在我正在构建一个演示WPF应用程序,以了解如何将EF4与WPF集成。我在我的WPF应用程序中使用MVVM,其中每个视图(或多或少)都有一个包含控件绑定到的数据属性的视图模型。例如,我的WPF演示应用程序在视图模型中有一个Customers属性,视图中的下拉列表将绑定到该属性。正如您可能已经猜到的,我的EDM包含一个Customer实体。

这是我的问题:如何将LINQ to Entities结果连接到我的视图模型属性?当我查询我的客户实体时,看起来我收到IQueryable<Customer>。但我的视图模型属性是ObservableCollection<Customer>,我需要数据绑定才能工作。那么,我如何从IQueryable<Customer>ObservableCollection<Customer>?谢谢你的帮助。

回答

2

根据MSDN,ObservableCollection构造函数可以采用List<T>IEnumerable<T>。假设queryable是你的IQueryable<Customer>

ObservableCollection<Customer> ocCustomer = new ObservableCollection<Customer>(queryable.ToList()); 
+0

我会检查一下。这可能很简单,但对于NHibernate来说,如果我打破了这个集合,我就失去了脏检查。 – 2010-03-12 01:25:36

+0

更完整的答案可以在这里找到:http://stackoverflow.com/questions/2433591/does-wpf-break-an-entity-framework-objectcontext。基本上,当WPF添加或删除可观察集合中的对象时,必须更新ObjectContext。使用来自ObservableCollection 的集合类很简单。 – 2010-03-12 22:37:43