Fluent API 与 FluentValidation

Fluent API vs FluentValidation

Fluent API 在用于验证的模型中优于数据注释。然后我们还有 FluentValidation。如果我们有流利的API,我们还需要FluentValidation?或者 Fluent API 仅适用于模型,而 FluentValidation 适用于其他一切?

fluentValidation 用于验证规则框架。虽然简单的验证规则可以是例如:文本长度为 100 个字符或它是必填字段,但在大多数业务案例中,规则要复杂得多,并且可以以易于 read/write 的方式定义它们。

Fluent API 是 Entity Framework 扩展,它使 read/write 易于使用 Entity framework,用于将数据库等数据源映射到 C# 数据转移对象类。 DTO 中没有业务逻辑,它们被转换为具有它们的模型。

部分问题是您将验证放在哪里?假设您的应用程序分层为 - 客户端、服务器端、微服务、数据库。它应该在其中之一还是全部或介于两者之间,简短的回答是 - 是。

您应该有数据库规则,以防止存储无效状态。同时,数据库调用成本高且耗时。将所有业务规则添加到数据库及其约束、设置触发器等称为数据库优先架构。虽然这是可能的,但通常可以设置一个将在 80-98% 的时间内命中的缓存。客户端验证的一般问题是它可以被绕过,以及其他多种原因。

简而言之 - 每个验证解决方案或抽象应用程序的方式都有局限性。开发人员通常尝试以最小的努力编写干净的代码,并且他们经常需要添加测试,而且他们通常不编写模式或数据库集成测试,因此他们将业务逻辑添加到模型并为其编写测试。

此外,Fluent 验证用于模型验证,Fluent api 用于数据源访问。