【问题标题】:Repository pattern and execution of custom SQL存储库模式和自定义 SQL 的执行
【发布时间】:2015-03-18 12:39:22
【问题描述】:

我一直在从事一个实现存储库模式的项目。基本上它有以下结构:

域对象

实现 IRepository 或 IGetOnlyRepository 的存储库 界面

与客户端通信的 DTO 对象

我参与从数据库生成报告。这些报告相当复杂,并且依赖于从存储过程或执行动态查询生成的数据。我注意到到目前为止,为了对报告执行查询,开发人员已经使用给定存储库中的方法来执行对数据库的查询(使用 NHibernate 的 session.ExecuteQuery 方法)。

但是,执行的查询通常会组合多个表,对我来说,它们不属于存储库。您能建议我在哪里执行此类查询的好习惯吗?

【问题讨论】:

    标签: design-patterns nhibernate repository-pattern


    【解决方案1】:

    我的建议是:不要在架构的顶层使用存储库。

    制作“报告”模块

    你的系统应该被分成模块。因此,您应该有一个单独的“报告”模块,您可以在其中使用直接 sql 而不是存储库。出于性能目的,您可能还想在报告模块中创建新的“平面”模型。

    如果所有模块都需要使用您的存储库进行数据访问,这就像使用一颗灵丹妙药解决不同的问题一样。那是行不通的!

    限界上下文

    在领域驱动设计中,有一个概念“限界上下文”。因此,您的报告模块可能是一个单独的有界上下文。不同的有界上下文使用不同的通用语言。不要在整个系统中使用一组模型。

    有用的链接

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      相关资源
      最近更新 更多