问题标签 [specification-pattern]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - 如何将 OrderBy 与带有 Ardalis 规范的对象属性的聚合一起使用?
我正在尝试使用 Ef 核心和 Ardalis 规范查询我的 postgresql 数据库。
对于我构建的查询,我想通过使用 OrderBy 和嵌套对象上的属性的聚合来对结果进行排序。
我想要的排序是按评分最高的诊所对诊所列表进行排序。等级为 1-5。
因此,如果一个诊所有两个评分为 5 的评论,它应该排在一个有 5 条评分为 2 或评分为 4 的评论的诊所之上。为此,我必须计算平均值,然后按最高值排序
到目前为止,我的查询没有按预期工作,因为它只能获得最高值。我可以以某种方式在这里插入平均值计算吗?
运行查询:
domain-driven-design - DDD 建模设置为值对象
我正在尝试以 DDD 方式构建应用程序。想象一下聚合根是一个“页面”,其中包含其他聚合,例如作者、评论者、评论、状态等......
页面还可以有各种设置,例如:
- 私人页面
- 允许评论
- 允许匿名评论
- x 日期后锁定
- 蛞蝓
我正在尝试考虑对这些“设置”进行建模的最佳方式。目前我正在寻找一个将每个单独的设置作为值对象的设置集合。如您所见,其中一些本质上是布尔值,而另一些可能包含特定值,例如日期。鉴于可能有几十个设置,其中一些具有默认值,我是使用每个特定设置对“设置”集合建模,还是仅作为具有适用设置的集合建模?
有没有“更好”或标准的 DDD 方法来解决这个问题?我正在考虑在这里使用规范模式,但得出的结论是它并不真正适用
对不起,厚颜无耻的第二个问题....
一个页面可以具有多种状态之一(例如草稿、发布、计划、存档),但在给定时间只有一种状态。关于建模的最佳方法的类似问题。作为状态代表具有身份的事物,我目前已将状态实现为实体。我想知道更好的方法是将其建模为工作流还是状态历史?
c# - 如何获得不过滤或不做某事的空规范?
我有一个基本控制器,它应该返回一个对象列表(并将它们从 DTO 映射到业务)
如果子控制器决定应用规范(过滤或包含某些内容),它可以通过覆盖该GetSpecification()
方法来实现。
但默认情况下,在基类中我不想过滤对象。
我使用ardalis 规范,但它可以是任何通用IQueryable
的东西......
实际上它说:
错误 CS0144 无法创建抽象类型或接口“规范”的实例
typescript - 尝试实现通用规范和访问者模式时,类型不满足约束并错误地扩展接口
我正在尝试一起实现通用规范模式和通用访问者模式。这是我的基本接口。
为方便起见,我为基本布尔运算符实现了一些基类和一个抽象类。
所有上述工作和编译没有错误。但是当我尝试创建一个扩展基本 SpecificationVisitor 接口的接口并实现一个扩展抽象 CompositeSpecification 的类时遇到编译器问题。
我收到以下错误:
我不太明白它为什么抱怨。我需要改变什么才能让它按照我想要的方式工作?
clojure - Clojure.Spec 派生或别名另一个规范
我想使用 clojure 规范来建立一组类型约束,这些约束可以被其他规范别名或进一步约束。
例如,我可能有许多字段都需要有效的清理降价。
以下示例适用于验证 ( s/valid?
) 但不适用于生成 ( gen/generate
)
但是(gen/generate (s/gen ::sanitized-markdown))
确实有效。
有没有办法扩展它以保留所有行为::instruction-list
?::sanitized-markdown
c# - .Net Core 3.1 Web Api 中的规范模式
我正在使用规范查询搜索方法,它包括搜索、orderBy、groupBy。Search 和 Orderby 都可以,但我在这一行的 groupBy 方法中遇到了问题query.GroupBy(spec.GroupBy).SelectMany(x => x)
请看以下代码:
我想在 ApplyGroupBy(x => x.ShopId); 处使用 ShopId 申请 groupBy
像这样的 BaseSpecifcation 类
FindWithSpecificationPattern 和 GetQuery 方法:
我在这条线上遇到了问题
query = query.GroupBy(spec.GroupBy).SelectMany(x => x);
虽然它不会抛出异常,但我无法得到结果。当我调试时,我看到错误消息
Query='((Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable<Nail.Management.Domain.Entities.Catalog.EmployeeType>)query).DebugView.Query' 引发了“System.InvalidOperationException”类型的异常
我在 Google 中搜索了很多次,但没有看到任何使用规范模式实现 GroupBy 的示例。请帮帮我,非常感谢!
c# - .然后包含在规范模式,EF Core
谁能指导我,如何在规范模式中添加 .ThenInclude(s) ;我正在使用实体框架核心。
我有下面的 .Include 代码,它正在工作。
}
任何帮助将不胜感激。
r - dplyr 查找具有特定值集的记录
我有一个具有一些 ID 和相关时间点的数据集。我想过滤掉具有特定时间点组合的 ID。如果我使用 %in% 或 | 进行过滤,我会从特定组合中获取 ID。我如何在 R 中做到这一点?
ID | 时间点 |
---|---|
1 | 1 |
1 | 6 |
1 | 12 |
2 | 1 |
3 | 1 |
3 | 6 |
3 | 12 |
3 | 18 |
4 | 1 |
4 | 6 |
4 | 12 |
我想过滤具有时间点 1,6 和 12 的 ID 并排除其他 ID。
结果将是 ID 1,3 和 4
c# - 在规范模式中组合规范时,无法将 LINQ 表达式转换为 Sql
我正在使用规范模式来执行数据库过滤,并避免在内存上进行(我大致遵循了这篇文章)。我的基本规范类是这样的:
从这个基本规范类,派生出多个强类型规范,它们各自工作得很好。但是,当尝试组合这些规范并在我的 Repository 类中评估 CombinedSpecification 时,就会出现问题:
System.InvalidOperationException:无法翻译 LINQ 表达式 'DbSet() .Where(c => c.ClientCode == __client_0 && c.Status == "Efective")'。以可翻译的形式重写查询,或通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用显式切换到客户端评估。有关详细信息,请参阅https://go.microsoft.com/fwlink/?linkid=2101038。
下面看一下 CombinedSpecification 类:
为了清楚起见,按单个规范过滤就可以了,但是在组合它们时,LinQ 表达式似乎无法翻译(这对我来说似乎很奇怪,因为我没有使用 SQL AFAIK 不支持的任何方法)。我避免显示 Repository 类以减少此问题的数量,但无论如何,这里是我的 Find() 方法的相关行:
提前感谢您的帮助,我希望我的第一个问题已经明确说明!
java - 用于查找最新状态的 Spring Data JPA 规范
我正在尝试创建一个规范来根据他们的最新状态(可用、不可用)过滤人们。考虑以下实体。
在这个问题的帮助下,我创建了以下规范来根据他们的状态类型过滤一个人。
我知道我必须greatest
在createdAt
内部使用,Status
但我无法弄清楚语法。这是我的buildJoinSpecification
.
我将不胜感激任何帮助。谢谢。