【问题标题】:How to combine data from 2 repositories如何合并来自 2 个存储库的数据
【发布时间】:2012-12-19 09:06:08
【问题描述】:

我有一个关于在 asp/mvc 中合并来自 2 个存储库的数据的问题。

我有 2 个存储库,例如,UserRepo 和 InvoiceRepo。

现在我想创建一个包含用户数据和发票数据的查询 (例如:具有上一张发票的地址和数据的所有用户)。

这样做的最佳方法是什么?

【问题讨论】:

    标签: asp.net-mvc model-view-controller repository repository-pattern repository-design


    【解决方案1】:

    您可以使用执行连接并返回您需要的所有数据的方法来扩展现有存储库(可能是InvoiceRepo)。

    InvoiceRepo.GetUserInvoices(userId) 听起来是个明智的选择。

    这是存储库模式的一个常见问题 - 为您的方法找到合适的存储库。

    【讨论】:

      【解决方案2】:

      为什么一定要一个电话搞定?

      var users = userRepos.GetUsers();
      var lastInvoices = invoiceRepos.GetLastInvoiceForAllUsers();
      var usersWithInvoices = (from x in users
                               select new UserWithInvoice(x, lastInvoices.First(inv => inv.userId = x.Id);
      

      这将是两个 SELECT 并且必须更容易理解。

      【讨论】:

      • 请注意,这可能会从数据库加载整个表,具体取决于实现。如果需要分页会很棘手(虽然没有提到)
      • 如果需要分页,只需将int[] userId 传递给GetLastInvoiceForUsers
      猜你喜欢
      • 2017-02-03
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多