gpt4 book ai didi

domain-driven-design - 关于 ReadModels 和域的 DDD/CQRS 混淆

转载 作者:行者123 更新时间:2023-12-04 08:23:33 25 4
gpt4 key购买 nike

因此,经过大量阅读后,我现在意识到复杂的报告功能不属于您的典型存储库,需要某种专用的“Finder”返回只读对象以用于报告。

我不清楚“Finder”类及其关联的 ReadModel 类应该放在我的项目中的什么位置?查找器是否像存储库一样,因为您在基础结构组件中有一个查找器接口(interface)以及具体的 Readmodels?

这些类属于哪里?

最佳答案

我通常有一个逻辑查询“层”。合乎逻辑,因为我并不总是需要将它分成自己的程序集(从 .Net/C# 的角度来看)。它不应该在您的域中,因为该域不应该查询恕我直言。域与聚合、实体、值对象等有关。它需要的任何其他东西都需要输入到域对象中。查询位可能在应用程序服务边缘发挥更多作用。

然后我最终得到的是我的存储库仅返回所需的完整聚合/实体和一个在读取端实现的单独的 IQuery 接口(interface)。通常我将它放在 DataAccess 程序集中。例如:

public interface IUserQuery
{
bool ContainsEMail(string emailAddress);
int NumberOfAdminisitrators();
DataRow Profile(Guid id);
DataTable FriendRequests(Guid id);
SomeReadModel ForSomethingThatContainsSayAList(DateTime date);
}

您会注意到我尽可能使用简单类型和技术特定的数据访问对象,如 DataRowDataTablenever DataSet :) --- 尽管 DataSet 可能 用于复合数据,但它有点麻烦。

我尝试将特定读取模型 (DTO) 保持在最低限度,但有时在处理复合数据时可能需要它们。

关于domain-driven-design - 关于 ReadModels 和域的 DDD/CQRS 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17140455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com