Asp.net web api 使用FluentValidation进行更深层次的数据库验证是一种不好的做法吗?

Asp.net web api 使用FluentValidation进行更深层次的数据库验证是一种不好的做法吗?,asp.net-web-api,asp.net-core,fluentvalidation,Asp.net Web Api,Asp.net Core,Fluentvalidation,例如,您可以验证电话号码或电子邮件,这些都是FV文档,但如果您需要确保经理“X”的员工尚未使用该电话号码,该怎么办?我知道通过所有自定义验证器选项可以做到这一点。但我应该在那里做吗 如果我把这个逻辑放到一个复杂的自定义FluentValidation中,我担心我在错误的地方用这个逻辑编码。传统上,我只会在我通常进行添加/保存的区域将其添加到我的服务中 因为我已经为我的视图模型设置了流畅的验证,并且我正在那里进行其他类型的验证,所以将所有内容都放在一个地方似乎很吸引人。但是,这意味着如果我在非we

例如,您可以验证电话号码或电子邮件,这些都是FV文档,但如果您需要确保经理“X”的员工尚未使用该电话号码,该怎么办?我知道通过所有自定义验证器选项可以做到这一点。但我应该在那里做吗

如果我把这个逻辑放到一个复杂的自定义FluentValidation中,我担心我在错误的地方用这个逻辑编码。传统上,我只会在我通常进行添加/保存的区域将其添加到我的服务中


因为我已经为我的视图模型设置了流畅的验证,并且我正在那里进行其他类型的验证,所以将所有内容都放在一个地方似乎很吸引人。但是,这意味着如果我在非web应用程序中重用我的逻辑,我必须记住以其他方式执行这些验证器,而不是通过modelbinder
IsValid()
自动执行这些验证器。虽然我没有花额外的时间编码,使我的项目成为这样的模块化。我离题了。

不,这确实是个好地方。无论底层框架如何,您都希望将验证保持在同一位置,并使其可用于逻辑

在ASP.NET中使用属性验证和ModelStateDictionary可以将逻辑绑定到ASP.NET,而FluentValidation可以用于所有内容。您仍然可以使用服务包装该逻辑,并在验证成功时仅在其中添加/更新实体。我大量使用fluentvalidation,即使是在需要进行数据库查询的情况下,它也可以正常工作。我可以简单地从ASP.NET切换到控制台应用程序或其他任何应用程序,并且两者的逻辑都非常相同

将验证逻辑分成几个区域听起来不像是最佳实践