DDD:尝试使用C#对与Poco,存储库,DTO和DAO有关的代码进行排序和过滤吗?

我从存储库中获得了项目列表.现在,我需要对它们进行排序和过滤,为了提高效率,我相信可以在存储库中完成.我认为将有两种以DDD方式执行此操作的方法:

>将过滤器和一个充满条件的排序对象发送到存储库(这叫什么)?
>存储库结果会使用.filter和.sort方法生成一个对象吗? (这将不是POJO / POCO,因为它包含多个对象?).

那么答案1、2还是其他?你能解释为什么吗?我倾向于#1,因为存储库只能发送我想要的数据(或者#2可以像LazyList一样延迟访问数据?)代码示例(或网站链接)将非常有帮助.

例:

>产品product = repo.GetProducts(mySortObject,myFilterObject); // Poco清单
> product.AddFilter(“ price”,“ lessThan”,“ 3.99”); product.AddSort(“ price”,“ descending”);

解决方法:

这不是一个完整的答案,但是您可能想看看CQRS(命令查询责任隔离)背后的一些想法(可以找到here的一些很好的链接).

CQRS是一种关于DDD的思考方式,可以帮助澄清其中的一些内容.它的级别高于您的特定问题,但这可能会有所帮助.

从本质上讲,我认为这只会帮助您决定采用第一个选项(这是我在类似情况下最终得到的结果).我们称它为查询对象.

上一篇:javascript-根据匹配的ID合并两个数组中的项目


下一篇:javascript-如何使用jQuery在2个排序列表之间拖动项目?