【问题标题】:Select queries with Repository + Unit of Work Patterns使用存储库 + 工作单元模式选择查询
【发布时间】:2013-10-24 11:57:10
【问题描述】:

我已经阅读了很多关于工作单元和存储库模式的信息。 我从未见过的是如何检索数据。 UoW 对 Select 语句没有意义。

我将使用具有 n 层架构的 asp.net MVC,这一点我从未在任何教程或文章中看到:

在哪里以及如何使用这些模式调用带有/不带有 INNER JOIN 的 SELECT 语句? 从服务层直接调用DataContext?

【问题讨论】:

    标签: asp.net-mvc design-patterns repository-pattern unit-of-work


    【解决方案1】:

    工作单元用于更新模型。确实查询你不需要它。当使用存储库模式时,所有与 db 相关的内容(选择、连接等)都是存储库实现的一部分。

    存储库使用者,例如控制器,依赖于存储库接口(抽象),而具体存储库由 DI 容器注入。消费者永远不会看到数据库或其中的东西,它只会看到应该返回控制器需要并理解的对象的存储库方法(即使您返回 ROM 实体,控制器也不知道它是一个实体)。

    重要的一点是要了解存储库接口定义的是 WHAT 而不是 HOW。实施涉及“如何”。这意味着控制器不会构建查询,而存储库会。你只要问它你想要什么,它就会神奇地提供。

    【讨论】:

    • 我看到的大多数存储库模式示例都使用单个 SELECT 语句。永远不要复杂查询..即使是复杂查询,所有“子句”:分组依据、排序依据、过滤器、进入存储库方法……或者这些过滤器(和排序..)将适合“服务层”?
    • 所有与查询相关的内容都进入 repo 的方法。方法最多可以接受分页和排序参数
    • 那么关于你的答案,你不应该使用 UoW 进行查询吗?假设我有一个服务 - 我觉得同时注入 UoW(用于 DB 突变)和单个存储库可能是不好的做法,因为开发人员可能会不小心使用存储库而不是 UoW 进行插入或更新。
    猜你喜欢
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2011-08-28
    • 2014-12-27
    相关资源
    最近更新 更多