白话Entity Framework Core数据验证( 五 )

通过上述代码就可以一处编写验证 , 多处使用了 。 具体的思路和前面所讲的一样 , 这里就不再进行讲解了 。

二、第三方扩展模型验证

前面所讲的是通过数据注解的方式来进行数据验证的 , 但是如果是使用 Fluent API 的方式就没办法解决文章开头所说的问题 , 因为Fluent API 模式并没有提供对数据模型的验证 。 这时我们可以使用第三方扩展 , 在 EF Core 中常用的模型数据验证第三方扩展是 FluentValidation.AspNetCore 。 在使用前我们需要在 NuGet 中下载此扩展 。 FluentValidation.AspNetCore 安装完成后我们需要为模型创建验证器 , 验证器是一个继承自 AbstractValidator<T> 的类 , 验证规则使用 RuleFor 方法定义在验证器构造函数中 。 代码如下:

public class ModelValidator:AbstractValidator<User> { public ModelValidator() { RuleFor(p => p.Name).NotEmpty().WithMessage(\"姓名不能为空\"); RuleFor(p => p.Name).MaximumLength(5).WithMessage(\"姓名长度在5字节\");

上述代码进行了两个验证 , 一个是验证 Name 字段是否为空 , 另一个是验证 Name 字段的长度 , 其中我们通过 MaximumLength 规定了 Name 字段的最长长度为 5 字节 。 之后我们通过 WithMessage 方法返回我们自定义的错误信息 。 我们定义完验证规则后下一步就是将我们定义的验证规则与应用程序连接起来 , 这里我们需要用到 AddFluentValidation 来注入 , 例如在 Asp.Net Core 程序中我们将注入程序写入 Startup 的 ConfigureServices 方法里 。 我们调用 AddFluentValidation 方法会将 FluentValidation 服务添加到 Asp.Net Core 中 , 然后使用 RegisterValidatorsFromAssembly 方法将自定义的验证代码注入到容器中 , 代码段如下:

推荐阅读