我在使用 LINQ 实体化查询时一直在阅读,IQueryable
它在处理之前属于类型,但是当查询被处理后,它不再是一个IQueryable
,而是一个ObjectQuery
.
在那种情况下,从我的层(存储库层)编写方法以返回 IQueryable 是否正确?
我需要投吗?
为什么我要返回一个ObjectQuery
?
我来自 LINQ to SQL 背景,IQueryable
但 EF 似乎改变了这一点。
任何帮助都非常感谢。
我在使用 LINQ 实体化查询时一直在阅读,IQueryable
它在处理之前属于类型,但是当查询被处理后,它不再是一个IQueryable
,而是一个ObjectQuery
.
在那种情况下,从我的层(存储库层)编写方法以返回 IQueryable 是否正确?
我需要投吗?
为什么我要返回一个ObjectQuery
?
我来自 LINQ to SQL 背景,IQueryable
但 EF 似乎改变了这一点。
任何帮助都非常感谢。
我的存储库总是返回 IQueryable。这样做的原因是 IQueryable 不依赖于 EF 而 ObjectQuery 是。因此,如果我希望我的其他层对持久性无知,我不想引入对 ObjectQuery 的依赖。
ObjectQuery 是具有几个附加功能的 IQueryable 的实现。您将很快发现的第一个功能是包含功能,它是急切加载导航属性(相关实体)所需要的。第二个特点是 EQL - 实体查询语言。EQL 是查询概念模型的第二种方式。它的语法与 SQL 相似。您可以将简单查询编写为字符串,将其传递给 ObjectQuery 构造函数并执行查询或在 Linq-To-Entities 中使用它。