3

我在使用 LINQ 实体化查询时一直在阅读,IQueryable它在处理之前属于类型,但是当查询被处理后,它不再是一个IQueryable,而是一个ObjectQuery.

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

我需要投吗?

为什么我要返回一个ObjectQuery

我来自 LINQ to SQL 背景,IQueryable但 EF 似乎改变了这一点。

任何帮助都非常感谢。

4

1 回答 1

9

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

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

于 2010-09-04T21:06:34.717 回答