在用于验证的模型中,Fluent API比Data Annotation更受欢迎。然后我们还有FluentValidation。如果我们有fluent API,我们还需要FluentValidation吗?或者Fluent API仅用于模型,而FluentValidation用于其他所有内容?
发布于 2019-07-20 16:10:01
fluentValidation用于验证规则框架。虽然简单的验证规则可以是例如:文本长度是100个字符,或者它是必填字段,但在大多数业务情况下,规则要复杂得多,并且它能够以易于读/写的方式定义它们。
Fluent API是Entity framework的扩展,它提供了一个易于读/写的实体框架,用于将数据库等数据源映射到C#数据传输对象类。DTO中没有业务逻辑,它们被转换为具有业务逻辑的模型。
部分问题是你把验证放在哪里?假设您的应用程序分层到客户端、服务器端、微服务和数据库。它应该在它们中的一个还是全部中,或者介于两者之间的东西,简短的答案是-是的。
您应该有数据库规则,以防止存储无效状态。同时,数据库调用既昂贵又耗时。将所有业务规则添加到数据库及其约束、设置触发器等称为数据库优先体系结构。虽然这是可能的,但通常也可以设置一个80-98%的命中率的缓存。客户端验证的一般问题是它可以被绕过,以及多种其他原因。
简而言之,每个验证解决方案或如何抽象您的应用程序都有局限性。开发人员通常试图以最少的努力编写干净的代码,并且通常需要添加测试,并且通常不编写模式或数据库集成测试,因此他们向模型添加业务逻辑并为其编写测试。
此外,Fluent验证用于模型验证,Fluent api用于数据源访问。
https://stackoverflow.com/questions/57121641
复制相似问题