>链接:
a) 我认为存储库(使用 EF我的存储库总是返回 IQueryable。原因是 IQueryable 不依赖于 EF,而 ObjectQuery 是。所以如果我愿意 我的其他层是持久性无知的,我不想介绍 依赖于 ObjectQuery。
实现)应该返回 IQueryable
而不是ObjectQuery
的原因是因为其他 ORM 也使用返回 IQueryable
的查询,并且通过让存储库返回IQueryable
我们可以轻松地在 EF 和其他 ORM 之间切换,而无需更改存储库的公共接口?
b) 除了 EF 和 NHibernate 之外,还有其他 ORM 也有返回IQueryable
的查询吗?
谢谢
你应该返回 IQueryable,因为这是表达式树的通用语言。如果它不是IQueryable,它要么是理解表达式的其他东西,要么是一些可怕的自定义语言,它给你的编程体验远远不如
var resultsINeed = getQueryable()。其中(表达式 1)。选择(表达式 2);
如果它理解这里的表达式示例,那么它也可以只是IQueryable,因为这就是IQueryable的全部意义 - 是一般的抽象,每个人都可以在他们的接口中重用。