代码之家  ›  专栏  ›  技术社区  ›  Zachary Scott

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

  •  1
  • Zachary Scott  · 技术社区  · 14 年前

    如果您从存储库中返回ilist(t)…

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

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

    我是否遗漏了一些基本概念?

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

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

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   Craig Stuntz    14 年前

    不是这样的 必修的 揭露 IQueryable<T> 但是如果你不这样做,你就会遇到 确切地 您描述的问题是:您不能进一步组合查询。

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

    我有一个演示 here .