DDD 存储库中的过滤器

2023-12-25

有 Campaign Entity,为此,我有 CampaignRepository 具有此功能

  1. 公共 IList FindAll();
  2. 公共活动 FindByCampaignNumber(字符串编号);

但现在我想要这个标准 -:

  1. 查找今天创建的营销活动。
  2. 查找本月创建的广告活动
  3. 查找排名前 5 的最新营销活动。
  4. 查找今年创建的营销活动。

因此,对于所有这些活动过滤器,

我是否为存储库中的每个函数创建单独的函数?

并像这样实施。

获取所有营销活动,然后筛选所需的营销活动,但我不想要所有营销活动。在谷歌搜索时我发现这个解决方案

1: http://russeleast.wordpress.com/2008/09/20/implementing-the-repository-and-finder-patterns/ http://russelleast.wordpress.com/2008/09/20/implementing-the-repository-and-finder-patterns/

有什么方法可以避免多个函数,还是我可以继续为每个过滤器创建单独的函数?


您是否考虑过实施规格 http://en.wikipedia.org/wiki/Specification_pattern您的应用程序中的模式?也许它看起来有点大材小用,但如果您的应用程序有一些复杂的用户过滤器选项,它可能会很有用。

class CampaignSpecification
{
    public CampaignSpecification Number(string number);
    public CampaignSpecification DateBetween(DateTime from, date to);
    public CampaignSpecification Year(DateTime year);
} //I have omitted all the AND/OR stuff it can be easily implemented with any SQL like query language

这是从存储库加载的示例

var  campaignList = CampaignRepository.load(
            new CampaignSpec()
                .Number("2")
                .Year(DateTime.Now);

另外我想补充一点,这在很大程度上取决于您使用的数据访问解决方案类型,当您知道将使用哪种 API(Criteria API、SQL 或其他)时,它会使实施变得更容易,这样您就可以调整您的规范接口使其实现更简单。

UPDATE:如果您使用 linq 和 nHibernate 在 .NET 中实现规范,请查看http://linqspecs.codeplex.com/ http://linqspecs.codeplex.com/

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

DDD 存储库中的过滤器 的相关文章

  • 使用 JPA/Spring 的(通用)DDD 存储库的方法:它看起来有问题吗?

    我对 DDD 和 JPA 还很陌生 我正在使用 JPA 和 Spring 开发一个通用存储库 我真的很喜欢文章中介绍的方法DDD 通用存储库 http codebetter com blogs gregyoung archive 2009
  • 如何调整规范模式来评估对象的组合?

    我知道规范模式描述了如何使用类的层次结构来实现ISpecification
  • ASP.NET MVC Web 应用程序中视图逻辑和域逻辑之间的混淆

    我对域 应用程序逻辑和用户界面逻辑感到困惑 为了说明我想要确定的内容 我将在下面描述一个虚构的程序以供说明 1 想象一个带有一组 3 个级联下拉菜单的小型应用程序 当您选择一个下拉列表时 它会触发 jQuery Ajax GET 最终到达
  • 强制聚合之间不变量的最佳方法?

    处理聚合之间一致性的最佳方法是什么 以 Vaughn Vernon 书中的示例为例 您有 BacklogItem 聚合和 SprintAggregate 当 BacklogItemEvent 引发时 事件处理程序会捕获它并尝试更新 Spri
  • DTO 道 POCO BO

    事实上 我对这些术语以及它们之间的关系感到非常困惑 我读过有关其中每个人的一些内容 但我不了解工作流程 DTO 数据传输对象 传输值的对象BO 业务对象 域模型中的对象 用于制作业务逻辑的对象POCO 不知道 我在维基上读过定义 但什么也没
  • CQRS - 如何对场景执行系统进行建模

    我最近开始为我即将启动的一个绿地项目研究 CQRS 和 DDD 我研究了 Udi Dahan Greg Young Mark Nijhof 等人的大量资料 这些确实非常有帮助 我想我对这些概念有了很好的理解 但是 我仍然有一些关于如何将这些
  • 值对象应该保存对实体的引用吗?

    值对象是否应该引用 DDD 方法中的实体 EDIT Dmitry 这大概就是我的情况 这里我附上类图 其中Account保留对集合的引用IInvoiceable项目 我治疗与Tenant作为实体 但它只拥有 1 个帐户 我不认为Accoun
  • 为什么域模型不应该用作 REST API 中的资源?

    我遇到过这样一种说法 按照 DDD 设计的领域模型不应该用作 REST API 中的资源 source https www thoughtworks com insights blog rest api design resource mo
  • Java 8 的迭代器与流

    为了利用广泛的查询方法包括java util stream在 Jdk 8 中 我尝试设计领域模型 其中 getters 的关系 多重性 零个或多个实例 返回一个Stream
  • BL 服务:异常还是方法结果?

    最好的方法是什么 为什么 V1 try var service IoC Resolve
  • 导入数据和事件溯源

    我目前正在开发一个整体系统 我希望将其引入现代并结合 DDD 和 CQRS 我收到了重新编写解决方案的导入机制的请求 并认为这可能是开始此重新架构过程的好机会 目前流程是 用户上传 CSV 系统解析 CSV 并在屏幕上显示每一行 对每一行以
  • DDD和应用层

    我在DDD中添加 Stateful Stateless WebService等是应用层 应用服务 吗 从下面的链接来看 这似乎是正确的 第二个问题 我创建了一个存储库类 所有涉及存储库的方法调用都应该包装在应用程序服务中吗 或者我可以直接在
  • 实现领域驱动设计的函数式方法

    我在使用 C 编写领域驱动应用程序方面拥有丰富的经验 我编写的应用程序越多 我就越发现我想要采用一种不太适合标准 C OO 技术的方法 我想编写尽可能多的纯函数 因为它们真的很容易测试 我想以更具声明性的方式编写我的业务逻辑 所以我一直在研
  • DDD 领域模型复杂验证

    我正在努力使用域驱动设计原则重写我的 ASP NET MVC 应用程序 我正在尝试验证我的用户实体 到目前为止 我能够验证基本规则 例如用户名和密码是非空 空白字符串 然而规则之一是 我需要确保用户名是唯一的 但是 我需要访问数据库才能执行
  • 在哪里检查用户电子邮件尚不存在?

    我有一个帐户对象 可以像这样创建用户 public class Account public ICollection
  • 定义具有多种消息类型的消息传递域

    到目前为止 我见过的大多数 F 消息传递示例都使用 2 4 种消息类型 并且能够利用模式匹配将每条消息定向到其正确的处理函数 对于我的应用程序 由于处理和所需参数的不同性质 我需要数百种独特的消息类型 到目前为止 每个消息类型都是其自己的记
  • 缺失的事件如何重播?

    我正在尝试了解有关 CQRS 和事件溯源 事件存储 的更多信息 我的理解是 在这种情况下通常不使用消息队列 总线 消息总线可用于促进微服务之间的通信 但它通常不专门用于 CQRS 然而 我目前的看法是 消息总线将非常有用 可以保证读取模型最
  • 将 F# 类型保存到数据库

    A lot http gorodinski com blog 2013 02 17 domain driven design with fsharp and eventstore f 文章数推荐 http fsharpforfunandpr
  • 如何将当前用户信息传递到 DDD 中的所有层

    类似的问题以前曾被问过 但不完全相同 除非我错过了 我想通过我的服务 域 域事件 域事件处理程序传递 IUserInfo 类实例 什么是最好的方法 我是不是该 通过注册使用 IoC 注入它 针对 Httpcontext Current se
  • 是一对一的关系不好的策略

    用户始终拥有一个钱包 一个钱包始终属于一位用户 由于我想分离与钱夹相关的属性 我创建了 Wallet 对象并能够跟踪钱交易 我创建了 public Wallet Entity

随机推荐

  • 在没有代理的 MS SQL 中实现每分钟事件

    我希望我的存储过程每分钟执行一次 但我无法访问 SQL Server 代理 使用 Windows 调度程序和 sqlcmd exe 将是最简单的
  • GitHub API (v3):按创建日期排序标签

    我在使用 GitHub API 时遇到了问题 我需要在单个标签之后创建的所有标签的列表 执行此操作的唯一方法是按日期比较标签 但是 API 的结果不是按日期排序的 API 的结果 rails 存储库示例 网络界面的结果 我所期望的是按日期排
  • PHP 等于 foreach 循环中的箭头运算符[重复]

    这个问题在这里已经有答案了 可能的重复 foreach ex as k gt v 中的 k gt v 是什么意思 https stackoverflow com questions 4758791 what does k v in fore
  • 追加 Blob 数据

    是否有一个函数可以附加 blob 数据JavaScript我目前使用以下方法 var bb new Blob Hello world 2 type text plain bb new Blob bb another data type te
  • 将blur.js 与angularjs 一起使用

    我正在尝试在 div 上制作带有角度的模糊背景效果 如上图所示 为此我正在使用blur js http blurjs com 使用 jquery 一切都可以正常工作 但真正的问题是使用 angularjs 可以实现这一点 最好的方法是什么
  • WPF 复选框:检查更改的处理

    在 WPF 数据绑定中 我可以将 IsChecked 属性绑定到某些数据 例如用户设置 但我需要处理 CheckChanged 事件 我知道我可以单独处理Checked 未选中事件 但是当这个值改变时有什么方法可以得到通知吗
  • data.table:lapply 具有多列输出的函数

    我正在使用一个函数smean cl normal来自 Hmisc 包 它返回一个具有 3 个值的向量 均值以及 CI 下限和上限 当我在一个data table对于 2 个组 我获得 2 列和 6 行 有没有办法获得与 2 个组相对应的两行
  • 在 TensorFlow 中在 NHWC 和 NCHW 之间转换

    将张量从 NHWC 格式转换为 NCHW 格式 反之亦然 的最佳方法是什么 是否有专门执行此操作的操作 或者我需要使用拆分 连接类型操作的某种组合 您所需要做的就是将维度从 NHWC 排列到 NCHW 或相反 每个字母的含义可能有助于理解
  • C++11 中弱类型枚举的基础类型

    C 11 引入了强类型枚举 语法如下enum class 它们与整数类型不兼容 需要显式转换才能获取其数值 C 11 还引入了为弱类型枚举指定存储类的能力 格式如下enum name type 到这里为止都还好 但看起来即使弱类型枚举具有给
  • Boost 1.55 不适用于 Visual Studio 2013

    我已经正确编译了 boost 二进制文件并遵循了所有说明 但是我收到了很多错误 我不知道为什么 Here is my include setup 这是我用来测试 boost 的代码 include
  • 如何在login.vue中添加标题?

    如何更新 apolloProvider 的标头 请查看 nativescript vue 应用程序存储库 https github com kaanguru vue apollo login https github com kaangur
  • 如何使用 JQuery 替换

    怎样才能全部替换掉li of a ul在 JQuery 中 我不想使用以下方法将任何新项目添加到列表中append相反 我想要一个包含新内容的新列表li相同的元素ul 我努力了 for index 0 index lt users leng
  • SQLSTATE[23000]:违反完整性约束:1452 无法添加或更新子行:外键约束失败

    我知道这是一个常见问题 但不知道这里出了什么问题 正如你所看到的 有这个 return user它显示了一个有效的ID 也在数据库中检查了这一点 user new User user gt first name data first nam
  • 显示系统警报“没有邮件帐户”

    目前我正在使用 MFMailComposeViewController canSendMail 检查设备中是否存在某个帐户 如果不是 我希望显示一些警报 我看到一个同类应用程序以本地化语言发出 无邮件帐户 警报 我想要同样的警报 它也应该本
  • Android 终端中的 Wget

    如何在 android 中的 Android 终端模拟器 应用程序中使用 wget 命令 它说 system bin sh wget 未找到 这意味着需要在android中安装wget 请帮我 你需要安装在你的Android系统中 你可以执
  • 是否可以在应用程序之间共享 Cuda 上下文?

    我想在两个独立的 Linux 进程之间传递 Cuda 上下文 使用我已经设置的 POSIX 消息队列 Using cuCtxPopCurrent and cuCtxPushCurrent 我可以获得上下文指针 但是这个指针是在我调用该函数的
  • jQuery 应用 css 不透明度

    我试图让不透明度在 IE 中工作 我目前正在 IE8 中进行测试 Chrome 等工作正常 但 IE8 很糟糕 我的代码是 mydiv animate opacity 0 5 and mydiv css opacity 0 5 不透明度应用
  • org.apache.xml.serializer.ToXMLSAXHandler 无法转换为 org.apache.xml.serializer.SerializationHandler

    我使用的是JBoss6 M5和jdk1 6 22 当我尝试运行服务器时 出现部署错误 有人知道可能出现什么问题吗 谢谢 由于以下原因 部署 vfs mnt data programming rz server server default
  • zc.buildout 停止工作:ImportError:没有名为 apport.fileutils 的模块

    我已经使用 buildout 有一段时间了 没有任何问题 事实上我昨天也没有任何问题 但截至今天 我所有的项目都未能成功 我在两个不同的 Ubuntu 工作站上尝试过 结果相同 这是我得到的错误 Initializing zc buildo
  • DDD 存储库中的过滤器

    有 Campaign Entity 为此 我有 CampaignRepository 具有此功能 公共 IList FindAll 公共活动 FindByCampaignNumber 字符串编号 但现在我想要这个标准 查找今天创建的营销活动