Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用FluentValidation有效地验证几个依赖外部数据的业务规则?

如何使用FluentValidation有效地验证几个依赖外部数据的业务规则?
EN

Stack Overflow用户
提问于 2011-11-29 20:06:16
回答 1查看 1.4K关注 0票数 0

对于我的FormPartB对象,我有几个业务规则,它们依赖于相关实体LicenseeFormPartA。我是FluentValidation的新手。

我想做的是:

我的objects.

  • i.e.中的
  • ,获取LicenseeFormPartA实体一次,然后为FormPartB设置一系列规则(即Must()谓词),使用来自相关的FormPartBValidator的值,我不想在每个规则定义中再次获取两个外部实体。

我有几个想法:

(1)在我的RuleFor定义之上,在Validator构造函数中获取这些实体,然后将这些实体保存为私有字段,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public PartBValidator()
{
    // Get my external data and save as private fields

    RuleFor...
    RuleFor...
}

(2)让调用中的实体验证(),然后将这些实体保存为私有字段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public override ValidationResult Validate(FormPartB instance)
{
    // Get my external data and save as private fields

    return base.Validate(instance);
}

然而,

在选项(1)中,我似乎无法访问选项(2) FormPartB.)

  • And ()中的FormPartB实例

  • ,它的工作方式似乎不像我想的那样(也就是说,似乎没有在每次验证的时候都被调用,我甚至不确定“获取对象并将其保存为私有字段”是正确的方法。

)

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-07 18:52:08

我在应用程序中通过依赖项来处理这个问题--向构造函数中注入一个服务,该构造函数检索验证所依赖的数据,结果非常好。

下面是一个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private readonly IFormService _service;

public PartBValidator(IFormService service)
{
    _service = service;

    var valueICareAbout = _service.GetMeFormAData();

    RuleFor...  // uses valueICareAbout
    RuleFor...
}

如果您担心通过规则定义中的服务获取数据对性能的影响,也可以考虑一些缓存选项。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8321008

复制
相关文章
在.NET Core 中使用 FluentValidation 进行规则验证
如果使用Web API或MVC页面,那么可能习惯了自带的规则验证,我们的控制器很干净:
全球技术精选
2021/03/03
1.7K0
在.NET Core 中使用 FluentValidation 进行规则验证
ASP.NET MVC中使用FluentValidation验证实体
本文转载:http://www.cnblogs.com/libingql/p/3801704.html
跟着阿笨一起玩NET
2018/09/19
7000
ASP.NET MVC中使用FluentValidation验证实体
.NET Core中的验证组件FluentValidation的实战分享
今天有人问我能不能出一篇FluentValidation的教程,刚好今天在实现我们的.NET Core实战项目之CMS的修改密码部分的功能中有用到FluentValidation,所以就以修改用户密码为实例来为大家进行一下ASP.NET Core中的验证组件FluentValidation的实战分享,希望能对大家有所帮助!由于本文以.NET Core实战项目之CMS中的项目为例,因此此篇文章会收录到系列教程的目录中。
依乐祝
2019/03/06
1K0
.NET Core中的验证组件FluentValidation的实战分享
验证规则
(adsbygoogle = window.adsbygoogle || []).push({});
双面人
2019/06/24
1.5K0
验证规则
[Laravel系列] 验证规则required_without_all 的使用
当有验证需求是,传递的多个字段,必须有一个有值 这时候就可以使用required_without_all 来实现 $rules = [ 'student_id' => 'required_without_all:student_id,ucid|integer', 'ucid' => 'required_without_all:student_id,ucid|integer' ]; 比如上面的student_id 和 ucid必须
唯一Chat
2021/11/01
5430
Maven 引入外部依赖
pom.xml 的 dependencies 列表列出了我们的项目需要构建的所有外部依赖项。
陈不成i
2021/07/15
1K0
个人总结的部分数据验证规则
正则表达式--验证手机号码:13[0-9]{9} 实现手机号前带86或是+86的情况: ^((\+86)|(86))?(13)\d{9}$ 电话号码与手机号码同时验证: (^(\d{3,4}-)?\d
用户7657330
2020/08/14
6940
如何在 ASP.NET MVC 中集成 AngularJS(3)
今天来为大家介绍如何在 ASP.NET MVC 中集成 AngularJS 的最后一部分内容。 调试路由表 - HTML 缓存清除 就在我以为示例应用程序完成之后,我意识到,我必须提供两个版本的路由表:一个运行在调试模式的应用程序下和一个运行在发布模式的应用程序下。在调试模式下,JavaScript 文件在未使用压缩功能的情况下会被下载。如果想要调试并在 JavaScript 控制器中设置断点,这是必须的。事实上,路由表的产生版本也出现了一些挑战,由于产生路由代码使用的是 JavaScript 捆绑,但是在
葡萄城控件
2018/01/10
1.8K0
如何在 ASP.NET MVC 中集成 AngularJS(3)
如何使用 Java lambda 语法和外部规则引擎开发定制应用程序
复杂的企业应用程序通常有着不同的业务逻辑。这些业务逻辑中的前置条件和后续系统动作(也就是我们所说的规则)总是变化的。而且,比起技术和编程,我们这里所说的规则更需要特定领域的知识介入。我们在实现这些规则时不应老想着靠代码,反而应该驻留在代码库之外,由具有核心领域专业知识的人去进行规则编写(他们只需要具备极少的技术及编程知识)。有一种特定类型的软件工具,也就是规则引擎可以帮助解决难以确定的业务规则需求。领域专家们并不需要擅长编码和技术,就像企业的品牌和营销团队不需要知道企业门户和移动应用程序的底层技术,但他们需要善于撰写编辑图像、横幅和其他内容等(这些工作用 Instagram 账号就能轻松做到)。Adobe aem 是提供无代码 / 低代码内容创作的内容管理系统之一。新兴技术和云平台不断提出低代码和无代码的解决方案,而且这些解决方案也获得了需求市场广泛的接受。本文介绍了一种将业务操作外部化到低代码工具中实现的轻量级方法,使得具有各自领域专业知识的人员也可以实现业务规则方面帮上忙。
深度学习与Python
2022/03/01
6840
如何使用 Java lambda 语法和外部规则引擎开发定制应用程序
Maven 依赖树的解析规则
对于 Java 开发工程师来说,Maven 是依赖管理和代码构建的标准。遵循「约定大于配置」理念。Maven 是 Java 开发工程师日常使用的工具,本篇文章简要介绍一下 Maven 的依赖树解析。
Yano_nankai
2020/11/07
3.2K0
Excel转表工具(xresloader)的新验证器(验证外部Excel和文本数据,唯一性和自定义规则)
xresloader 是一组用于把Excel数据结构化并导出为程序可读的数据文件的导表工具集。它包含了一系列跨平台的工具、协议描述和数据读取代码。
owent
2023/10/21
3740
Ansible如何使用lookup插件模板化外部数据
lookup 插件是 Jinja2 模板化语言的 Ansible 扩展。这些插件使 Ansible 能够使用外部来源的数据,如文件和Shell 环境。
山河已无恙
2023/01/30
2.1K0
设置Spring单元测试的外部依赖
比如单元测试中依赖redis-mock,就必须在Spring上下文下载之前就先启动Redis Server,否则就会报下面的错误
十毛
2019/12/02
1.3K0
buffalo-验证规则
使用了validate进行验证后会调用validator验证器,无论validataAndCreate还是 validateAndUpdate 都会调用这两个方法后继续调用validate方法,如果使用了validateAndSave方法则会判断id是否存在,如果存在则调用validateAndUpdate,不存在则调用validateAndCreate
caoayu
2020/09/23
5350
如何更有效地利用数据中心空间?
数据中心空间是指可供服务器存储在数据设施中的租用空间区域,包括机架、机柜、私人套装等,它通常每周 7 天、每天 24 小时监控所有电气和机械系统,如今,越来越多的公司选择空间更大的数据中心来满足其不断增长的存储需求。
网络技术联盟站
2022/04/03
4010
如何更有效地利用数据中心空间?
如何性能测试中进行业务验证
在性能测试过程中,验证HTTP code和响应业务code码是比较基础的,但是在一些业务中,这些参数并不能保证接口正常响应了,很可能返回了错误信息,所以这个时候对接口进行业务验证就尤其重要。下面分享一个对某个资源进行业务验证的Demo。
FunTester
2020/02/17
5830
EasyGBS平台如何使用外部Redis?
Redis搭建好后一般都是使用编程语言进行连接调用,默认Redis的设置是不允许外界访问,外界telnet请求Redis服务器的时候会有如下提示:
TSINGSEE青犀视频
2021/12/21
3750
C# RulesEngine 规则引擎:从入门到看懵
RulesEngine 是 C# 写的一个规则引擎类库,读者可以从这些地方了解它:
痴者工良
2022/11/08
2.6K0
C# RulesEngine 规则引擎:从入门到看懵
点击加载更多

相似问题

使用FluentValidation条件验证几个属性

15

Fluentvalidation将业务对象注入验证器

210

FluentValidation中的可选验证规则

10

记录验证器规则的FluentValidation

11

验证业务规则

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文