如果从存储库中返回IList(T)......
如何在将数据连接在一起时有效地创建SQL查询?
是否需要公开这些方法的IQueryable / IEnumerable数据结构?这对我来说很糟糕。
或者
我错过了一些基本概念吗?
现在我有一个存储库方法,如:
IList<T> Get( Expression(...) filter, Expression(...) sort, int skip, int take)
其中null表示全部获取。这非常有效,直到我想要查找一组客户的所有订单而不对每个客户进行查询。
答案 0 :(得分:1)
公开IQueryable<T>
并不是必需,但如果不这样做,则会遇到完全您正在描述的问题:您不能进一步撰写查询。
一种解决方案是将实体服务层放在存储库的前面。服务层是EF无知的,但可以进行LINQ投影。在LINQ中进行投影会产生一个组合的单个数据库查询。
我有一个演示here。