存储库模式可以用于加载“部分实体”吗

2023-12-31

我试图更好地理解领域驱动设计中的存储库模式。存储库模式实现的所有示例都仅处理实体。但是如果我只需要检索实体的某些部分怎么办?例如,我有具有大量属性的客户端实体。我可以在 ClientRepository 中定义这样的东西吗:

public IEnumerable<string> GetClientsNames() {  ...  }

of even:

class ClientBaseInfo       //includes some subset of properties of Client entity
{
    public string Name {get; set;}
    public string Surname {get; set;}
    public int Age {get; set;}
    public string Email {get; set;}
}

....

public IEnumerable<ClientBaseInfo> GetClientsBaseInfo() {  ...  }

这种实现的原因是性能。无论如何,我认为我的代码会被这种“部分实体”污染。这种方法是否在现实项目中以某种方式使用?或者避免加载重型实体的唯一方法是拆分表及其相应的实体或其他什么?

EDIT:是的,我说的是 DTO 之类的东西。我怀疑存储库是否旨在处理此类对象,或者仅用于业务实体。我可以针对特定情况定义很多不同的 DTO,但是我的代码会变得太复杂吗?我没有答案,因为我没有足够的经验。我想知道有经验的人的意见。


对于此类查询,建议的方法是使用读取模型(CQRS 样式)。

因此,您可以实现一个非常薄的查询层,该查询层返回原始结构以满足您的目的。在 C# 世界中,我选择以下任何内容DataRow to a DataTable到 DTO(对于更复杂的结构)。

请记住,读取模型并不意味着最终一致性,并且您的查询端可以处于从同一表/数据库中的 100% 一致性到另一个数据库中的最终一致性的任何级别。

因此,这些类型的查询并不适合存储库模式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

存储库模式可以用于加载“部分实体”吗 的相关文章

随机推荐

  • 常规静态类

    这个文件sample groovy 中的 static 有什么作用 static class froob 不管有没有 static groovy 代码都可以很好地编译 绝对没有区别 这种情况下的静电被忽略 为了进行测试 我创建了一个 gro
  • Pandas read_excel 返回 PendingDeprecationWarning

    我一直在使用以下命令将 Excel 文件导入为 Pandas 数据框read excel到目前为止 功能尚未出现明显问题 然而 我刚刚意识到 在最近的一些更新之后 我收到以下警告 usr local lib python3 7 site p
  • 如何使用 Java API 设置消息选择器?

    我正在尝试编写一个简单的测试用例 以根据消息属性从队列中提取消息 命中 7 5 0 3 QMgr 并使用 7 5 0 3 客户端 jar 我在网上看到的所有内容都表明我需要在打开队列时指定消息选择器 我对此很满意 但我只看到两种打开它的方法
  • 优化 PHP 字符串连接 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 这篇文章实际上并不是一个问题 但分享
  • SQLSTATE[23000]:违反完整性约束:19 NOT NULL 约束失败:

    尝试在 Laravel 上创建一个待办事项列表应用程序 但是当我尝试单击按钮创建一个新的待办事项列表时 我收到此错误 SQLSTATE 23000 Integrity constraint violation 19 NOT NULL con
  • jQuery 中的 ConfigurationManager.AppSettings

    我正在使用 mvc3 c 配置管理器中的应用程序设置在控制器中运行良好 但我想在我的 jquery 中使用这些常量 有没有办法在 jQuery 中使用 ConfigurationManager AppSettings 提前致谢 希望这对您有
  • 多部分/表单数据与应用程序/八位字节流

    我正在创建一个简单的REST API用于上传文件 从其他 API 中我发现他们使用 multipart form data 内容类型 但对我来说 它看起来像 application octet stream 就简单多了 如果我不打算随文件发
  • 为什么alloc方法可以增加retain count

    当我们打电话时alloc对于一个类 我知道对象的计数将 1 例如 NSObject obj NSObject alloc obj的引用计数将为1 我阅读了源代码 但找不到一些代码可以告诉我为什么alloc可以添加引用计数 还有一些博客说al
  • 如何将依赖项注入存储库基类

    各种种类 EnableXXXRepositorySpring Data 的注释允许您为存储库指定自定义基类 该基类将用作存储库中方法的实现 如果这样的基类需要访问其他beanApplicationContext如何注射这些药物 它不能开箱即
  • 创建新数据库时的最佳 ANSI 选项

    我正在为我们的生产环境在 SQL Server 2012 上创建一个新数据库 当我使用 SQL Server Management Studio 中的 新数据库 选项并生成输出时 我得到 CREATE DATABASE AAA CONTAI
  • makefile:如何链接不同子目录中的目标文件并包含不同的搜索路径

    我想更改测试代码的位置 tsnnls test DKU c 并且我无法在 makefile 中进行更改以正确反映此文件夹更改 一些帮助将不胜感激 我有两个问题 1 如何链接不同子目录中的目标文件 2 包含不同的搜索路径 在我的示例中为 3
  • 如何按嵌套多重集中的值排序?

    An 先前的问题 https stackoverflow com questions 69552492 jooq multiset order result set via conditions on multiset涵盖如何使用 jOOQ
  • 在 React Native 应用程序中读取 NFC 标签

    我想制作一个可以读取 NFC 标签的反应本机应用程序 我在用反应本机 NFC但无法让它工作 谁能帮助找出我做错了什么并指出我正确的方向 Code in 索引 android js如下 import React Component from
  • 用类装饰器覆盖构造函数?

    如何使用 ES7 类装饰器重写构造函数 例如 我想要这样的东西 injectAttributes foo 42 class Bar constructor console log this foo 哪里的injectAttributes装饰
  • 使用多线程访问同一个字符串(StringBuilder)

    我的问题是 如果我有时在同一个字符串上使用多线程 该字符串不会被替换 我在记事本上写了这个 所以语法可能是 wrong 使用 System Thread 当然还有其他 class private static StringBuild con
  • 如何在 C++ 中使用 malloc() [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何使用malloc 在C 程序中
  • 在 javaScript 中使用 for 循环时,如何为特定元素设置属性?

    下面我有一个分配给变量的函数 本质上我让它工作 将属性应用于元素集合 我的问题是我希望将设置为属性的元素与我传递给函数的字符串相匹配 我知道问题就在这里 document links i setAttribute target blank
  • 带参数的 Kivy 按钮绑定函数

    我正在尝试学习如何在 Kivy 中创建应用程序 但在向函数发送参数时遇到问题 我想将输入中的文本发送到函数并打印它 有人可以告诉我该怎么做吗 from kivy app import App from kivy uix boxlayout
  • XCode6.3可以配合IOS7.1 SDK使用吗

    是否可以将 XCode6 beta 与 IOS 7 1 SDK 一起使用 新工具好多了 但我需要为 IOS7 构建 是的 1 首先下载7 1 SDK XCode6Beta gt 首选项 gt 下载 gt iOS 7 1 模拟器 Note X
  • 存储库模式可以用于加载“部分实体”吗

    我试图更好地理解领域驱动设计中的存储库模式 存储库模式实现的所有示例都仅处理实体 但是如果我只需要检索实体的某些部分怎么办 例如 我有具有大量属性的客户端实体 我可以在 ClientRepository 中定义这样的东西吗 public I