0

我首先使用代码构建了一个数据库。我发现使用投影查询到具体类型是迄今为止最快的方法,比使用 Include语句更快。但是,我遇到了以下问题:

dim records=(From record in db.SomeDbSet
             Where record.UserID=userID
             Select New UserSpecificRecord With
             { .Name=record.User.Name
               .Tasks=record.Tasks
             }).ToList

当执行 .Tasks= 部分时,我会收到不同的错误,从无效的强制转换异常到 Enity Framework 不支持这种查询的消息,具体取决于我创建 UserSpecificRecord 类的 Tasks 属性的集合类型。

当我将代码更改为:

 Dim records= (From record in db.SomeDbSet
                 Where record.UserID=userID
                 Select New With
                 { .Name=record.User.Name
                   .Tasks=record.Tasks
                 }).ToList

   dim userRecords=(From record in records
                    Select New UserSpecificRecord With
                    { .Name=record.Name
                     .Tasks=record.Tasks
                     }).ToList

即:我投影到一个匿名类型,然后构建它所有工作的具体类型。不过,我非常希望能够直接投影到具体类型。可以做到吗?

4

1 回答 1

1

您不能投影到“实体”(您的UserSpecificRecord映射也是如此吗?从名称上看似乎如此)。
这与“具体课程”无关。

请参阅此答案无法在 LINQ to Entities 查询中构造实体

于 2013-03-31T17:56:04.540 回答