【发布时间】:2015-09-22 21:38:33
【问题描述】:
我正在阅读 Julia Lerman 的 programming_entity_framework_2nd_edition。
这本书说我们可以在 ObjectQuery 上使用 LINQ to Entities 方法。像这样
context.Contacts.Where("it.FirstName='Robert'").Take(10)
这是书中的一段摘录,说我们可以将 IQueryable 转换为 ObjectQuery
“但是,您不能另辟蹊径,将查询构建器方法添加到 LINQ 方法。 例如,context.Contacts.Take(10) 返回一个 System.LINQ.IQueryable。你可以 仅在 ObjectQuery 上使用查询生成器方法。如果您想附加查询 builder 方法到这个 IQueryable,你首先必须将 LINQ 查询转换为 ObjectQuery 然后追加方法。将 LINQ to Entities 查询转换为 ObjectQuery 是可能的,因为 ObjectQuery 实现了 IQueryable"
但是当我尝试执行此查询时,我收到一个异常,提示“LINQ to Entities 查询不支持查询生成器方法。有关详细信息,请参阅实体框架文档。”
((ObjectQuery<Contact>)context.Contacts.Take(10)).Where("it.FirstName='Robert'")
我正在使用 EntityFramework 4.3.0 版
我的代码有什么问题?
【问题讨论】:
-
如果你说:((ObjectQuery
)context.Contacts.Where("it.FirstName='Robert'").Take(10)会发生什么? -
当我调用 ((ObjectQuery
) context.Contacts.Where("it.FirstName='Robert'")).Take(10) 时,它工作正常。