简单存储库模式问题:如何有效地跨多个存储库进行查询?

时间:2010-10-26 21:21:24

标签: entity-framework-4 repository-pattern

如果从存储库中返回IList(T)......

如何在将数据连接在一起时有效地创建SQL查询?

是否需要公开这些方法的IQueryable / IEnumerable数据结构?这对我来说很糟糕。

或者

我错过了一些基本概念吗?

现在我有一个存储库方法,如:

IList<T> Get( Expression(...) filter, Expression(...) sort, int skip, int take)

其中null表示全部获取。这非常有效,直到我想要查找一组客户的所有订单而不对每个客户进行查询。

1 个答案:

答案 0 :(得分:1)

公开IQueryable<T>并不是必需,但如果不这样做,则会遇到完全您正在描述的问题:您不能进一步撰写查询。

一种解决方案是将实体服务层放在存储库的前面。服务层是EF无知的,但可以进行LINQ投影。在LINQ中进行投影会产生一个组合的单个数据库查询。

我有一个演示here