我在我的MVC4项目中使用FluentValidation.每件事都很完美,它与我的IoC(StructureMap)相连.
我有两个问题:
>我应该如何管理验证器的生命周期?可以让他们成为单身人士吗?或者没有区别,我可以根据自己的需要管理生命周期?这里的最佳做法是什么?
> FluentValidation非常好.我一直在使用它进行简单的验证(例如:属性不是空的等).我正在考虑使用它做一些Db验证(比如:属性值是唯一的.)我可以使用StructureMap将我的存储库传递给它,并检查Db的值.这是一个好主意吗?或者我应该在我的服务层而不是在我的IValidator中实现这个逻辑?
如果您在类似场景中使用它,您的体验是什么?
解决方法
我已经使用了FluentValidation多年了,并且已经问过并找出了你的问题.
>就个人而言,创建验证器的成本并不是很昂贵,所以我不会让它们成为单身人士.我遇到了需要访问HttpContext以要求文件上传的单身人士的问题.会发生什么是第一个HttpContext始终用于验证而不是当前的验证.
我个人建议你不要使用单身人士.
>我实际上一直这样做,我喜欢它.请注意,您注入的任何依赖都应该是有效的.如果您的数据库查询执行全表扫描并需要30秒,那么这不是一个好的体验.就像我上面说的那样,我通常会注入HttpContext来检查文件是否上传,并且我传递了一个DataContext来验证电子邮件是否尚未被采用.
对此疯狂,它是FluentValidation的一个巨大优势,只需确保依赖性在时间和资源方面并不昂贵.