我首先使用代码构建了一个数据库。我发现使用投影查询到具体类型是迄今为止最快的方法,比使用 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
即:我投影到一个匿名类型,然后构建它所有工作的具体类型。不过,我非常希望能够直接投影到具体类型。可以做到吗?