当使用LINQ to Entities时,返回IQueryable和ObjectQuery有什么区别?

3
我一直在阅读有关LINQ to entites的内容,发现在处理查询之前,查询的类型为,但在查询被处理后,它不再是,而是。
在这种情况下,从我的层(存储库层)编写返回IQueryable的方法是否正确?
我需要进行强制转换吗?
为什么我要返回一个?
我来自于LINQ to SQL背景,那里的东西总是,但EF似乎已经改变了这一点。
非常感谢任何帮助。
1个回答

9
我的代码库总是返回IQueryable。这样做的原因是,IQueryable并不依赖于EF,而ObjectQuery则依赖于EF。因此,如果我希望我的其他层与持久化无关,我就不想引入ObjectQuery的依赖。
ObjectQuery是IQueryable的实现,具有几个额外的功能。你很快会发现的第一个特性是Include函数,它用于加载导航属性(相关实体)。第二个特性是EQL - 实体查询语言。EQL是查询概念模型的另一种方式。它具有类似于SQL的语法。你可以将简单的查询作为字符串编写,传递给ObjectQuery构造函数并执行查询,或在Linq-To-Entities中使用它。

好的,那就用IQueryable吧 :-) ... 我不认为我需要ObjectQuery的任何高级功能... 嗯...我需要强制转换吗...从linq到entities查询返回的是一个ObjectQuery...所以当我从我的方法返回对象时...我需要进行强制转换或其他操作吗?再次感谢 - mark smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接