0

是否可以使用实体框架将数据库实体中的集合分配给 ObservableCollection?

这是 iv 到目前为止尝试的方法,我尝试使用构造函数将列表转换为 ObsrvableCollection ..但是 LINQ 不允许接受参数的构造函数。

为 Ienumerable 创建一个名为 ToObservable 集合的扩展......但 EF 不承认这一点。

有没有其他优雅的解决方案。下面给出的是我正在使用的代码......并且失败了

using (var db = new clientEntities())
{
                var data = from p in db.CLIENTs
                           select new Contracts.Client()
                                      {
                                          ClientID = p.CLIENT_ID,
                                          FirstName = p.FIRST_NAME,                                          
                                          PayInfo = new ObservableCollection<PayInfo>(p.PAY_INFO.Select(n=> new PaymentInfo(){ 
                                              PayID=n.ID                                                    
                                              }))
                                      };
    }

PayInfofield 是一个 Observable 集合。是否可以在不使用临时变量的情况下优雅地分配它。

4

1 回答 1

2

听起来您将 LINQ to Entities/SQL 与普通的 LINQ 混淆了。请记住,当您使用 EF 时,您编写的任何 LINQ 查询都必须转换为 SQL。因此,您需要对从 SQL 数据库返回的数据进行任何对象转换,都需要 EF 直接支持。这包括 ToList()、ToArray() 等,但不包括您自己的自定义扩展。

我认为您可以在这里做的最好的事情是首先查询数据库(您可以使用 ToList() 以便执行查询),然后在 ObservableCollection 的构造函数中使用该结果列表(或调用您的 ToObservableCollection() 扩展方法。

于 2012-05-17T21:27:46.690 回答