gpt4 book ai didi

asp.net-core - 如果有 CQRS、DTO 和实体,如何验证输入数据?

转载 作者:行者123 更新时间:2023-12-02 19:40:12 30 4
gpt4 key购买 nike

.Net Core 3,整洁的架构。

我阅读了很多关于使用 CQRS 进行数据验证的文章。例如therethere .

我做了一些总结:

  1. 需要验证 DTO 中的数据。它是实体的契约(Contract)。
  2. 作者的一些建议将日期验证为实体(域)。
  3. 在 CQRS AbstractValidator 中,我们也可以验证其他规则。

电子邮件字段验证将在 1 和 2 中进行。年龄限制将在 3.

但服务器中的三个验证 + 客户端中的一个验证是问题(大 DRY)。DTO 或实体中哪里有更好的验证?我认为在 DTO 中,因为当我从输入中获取 DTO 时,我可以验证并调用 ModelState.IsValid。但我也阅读了一些需要在实体中验证输入数据的文章。

所以,我很困惑。你能解释一下吗:

如果需要验证电子邮件字段和年龄限制(18 岁),需要在使用 CQRS 的 Clean Architecture 中将验证放在哪里?

最佳答案

您所有的 Api 契约(Contract)、命令都应该依赖原始类型。一旦你想初始化你的域模型,如果有错误的话,这里是你将无法做到的地方。如果您执行 DDD,它建议防止对象处于无效状态而不是验证无效对象(域模型与基于 Crud)。

关于asp.net-core - 如果有 CQRS、DTO 和实体,如何验证输入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60364639/

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