asp.net 如何使用Fluent API实现自定义验证?

vecaoik1  于 2023-08-08  发布在  .NET
关注(0)|答案(1)|浏览(120)

我有一个类竞争者

internal class Competator
    {
        public int Id { get; set; }

        public string Name { get; set; }  

        [MustBe12AndAbove]
        public int age { get; set; }
    }

字符串
对于年龄字段,我已经编写了一个自定义验证,如下面的代码,并在competator注册过程中使用它

internal class MustBe12AndAbove:ValidationAttribute
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            var Competator = (Competator)validationContext.ObjectInstance;

            return (Competator.age < 12) ? new ValidationResult("The competator must be above 12 to register")
                                           : ValidationResult.Success;
        }
    }


但是由于我没有在任何实体中使用DataAnnotation,所以我需要将其用作Fluent API方法,如下所示。

modelBuilder.Entity<Competator>()
                .Property(c => c.age)
                .MustBe12AndAbove();


这可能吗?

e0bqpujr

e0bqpujr1#

一般来说-不,这不可能。主要的问题是ValidationAttribute是服务器端验证,而你所说的Fluent API是数据库配置--将被转换成数据库模式和约束。
https://docs.fluentvalidation.net/en/latest/工具可能会让你的生活更轻松。
有关更详细的答案,请参见https://stackoverflow.com/a/54353112/2091519

相关问题