【问题标题】:Using LINQ to Entity results with MVVM通过 MVVM 使用 LINQ to Entity 结果
【发布时间】:2010-03-10 23:35:48
【问题描述】:

我开始在 VS 2010 RC 中使用 EF4 的实体框架。到目前为止,我已经完成了一些简单的控制台应用程序,我在其中创建了一个 EDM,使用 LINQ to Entities 对其进行查询,并将结果输出到控制台。

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

这是我的问题:如何将 LINQ to Entities 结果连接到我的视图模型属性?当我查询我的客户实体时,我似乎得到了一个 IQueryable<Customer> 回复。但是我的视图模型属性是ObservableCollection<Customer> 类型,我需要它才能使数据绑定工作。那么,我如何从IQueryable<Customer>ObservableCollection<Customer>?感谢您的帮助。

【问题讨论】:

    标签: wpf entity-framework viewmodel


    【解决方案1】:

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

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

    【讨论】:

    • 我会看看这个。可能就是这么简单,但是使用 NHibernate,如果我破坏了集合,我就会丢失脏检查。
    • 更完整的答案可以在这里找到:stackoverflow.com/questions/2433591/…。基本上,当 WPF 从可观察集合中添加或删除对象时,必须更新 ObjectContext。使用派生自 ObservableCollection 的集合类非常简单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    相关资源
    最近更新 更多