ServiceStack-ValidationandDatabaseAccess我正在使用ServiceStack来实现Api。我的解决方案的一个关键方面是积极的身份验证策略。我使用ServiceStack的ValidationFeature,这意味着如果在应用程序容器中注册了IValidator(或其后代:AbstractValidator),验证将在服务之前自动运行。通过积极验证,我的意思是我检查所有可能的错误条件,并在验证器级别进行逻辑验证。所以我的服务逻辑很干净。从实际的角度来看,这种服务逻辑与服务验证的独立性非常好,因为它提供了非常容易阅读和推理的服务逻辑/实现。但是,我开始认为FluentValidation的规则和规则集更适合简单的格式验证,而不是直接在我正在做的数据库访问中使用(主要是测试源自从请求中提取的ID的404错误)。问题:1:访问数据库的验证逻辑是否存在概念错误?2:从我目前所见,包括SS源代码,我没有找到定义FluentValidation规则的表单,例如:从请求中提取Id,命中数据库检索实体,并抛出404如果输入NotFound。我只使用FV规则来定义基本格式验证,例如:RuleFor(x=>x.UserName).NotEmpty();RuleFor(x=>x.Password).NotEmpty();其余的我手动完成。有人能解决这个问题吗?注意:这不是关于如何将ValidationResult/ValidationError转换为HttpResult/HttpError的问题。我已经介绍过,使用SS3.9.44中引入的ValidationFeature的ErrorResponseFilter。谢谢是的,检查验证逻辑中是否存在数据库记录是不正确的,因为那不是验证检查。这就是示例中没有以这种方式完成的原因。检查记录是否存在是一种验证检查。用一个例子来说明这一点:如果你使用信用卡号,你可以使用Luhn算法来验证信用卡号是否有效。这将在验证器中完成,因为它正在验证。但是仅仅因为您拥有一个有效号码并不意味着它存在,您可能拥有尚未发行的卡的有效号码。使用验证器来验证它是否存在是不正确的,因为这是一个验证过程,应该在业务逻辑中完成。当你开始使用数据库时,检查是否有你不在验证范围内的东西,因为你应该只将验证数据传递给数据库。您可以在此处详细了解validate和validate之间的区别。以上就是C#学习教程《ServiceStack——验证与数据库访问分享》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
