使用LINQ to Entities时返回IQueryable与ObjectQuery

mar*_*ith 3 linq-to-entities entity-framework iqueryable objectquery entity-framework-4

我一直在阅读时使用LINQ来IQueryable处理查询在处理之前的类型,但是当查询处理完毕后,它不再是一个IQueryable,而是一个ObjectQuery.

在这种情况下,从我的层(存储库层)编写方法以返回IQueryable是否正确?

我需要演员吗?

我为什么要退货ObjectQuery

我来自LINQ to SQL背景,IQueryable但事情总是如此,但EF似乎改变了这一点.

任何帮助真的很感激.

Lad*_*nka 9

我的存储库总是返回IQueryable.原因是IQueryable不依赖于EF,而ObjectQuery则依赖于EF.因此,如果我希望我的其他图层持久无知,我不想引入对ObjectQuery的依赖.

ObjectQuery是具有几个附加功能的IQueryable的实现.您将很快发现的第一个功能是包含功能,该功能需要急切加载导航属性(相关实体).第二个特征是EQL - 实体查询语言.EQL是您查询概念模型的第二种方式.它具有与SQL类似的语法.您可以将简单查询编写为字符串,将其传递给ObjectQuery构造函数并执行查询或在Linq-To-Entities中使用它.