ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

EFCore里的数据校验特性

2022-07-24 11:34:28  阅读:129  来源: 互联网

标签:set Name get 验证 校验 特性 ErrorMessage EFCore public


[Required] [MinLength(3,ErrorMessage = "名称长度至少为3")] [Display(Name = "名称")] public string Name { get; set; }


 

[Required] 表示必需的,
[MinLength(3,ErrorMessage = “名称长度至少为3”)],这里表示名称长度至少为3个字符
[Display(Name = “名称”)]这里将name显示为名称
[Range(16,100,ErrorMessage = “年龄范围为16-100”)]范围验证

ErrorMsg是校验失败时显示的提示信息。

EFCore里的数据校验特性主要来源于System.ComponentModel.DataAnnotations命名空间


 

CustomValidationAttribute可以采用用户自己定义的验证方法来进行验证。
但是一般都是通过继承 ValidationAttribute来进行自定义验证特性。

如:

public class Student
   {
       public int Id { get; set; }
        
       [Required]
       [MinLength(3,ErrorMessage = "名称长度至少为3")]
       [Display(Name = "名称")]
       public string Name { get; set; }
       
       [CheckSex]
       public string Sex { get; set; }
       [Range(16,100,ErrorMessage = "年龄范围为16-100")]
       public int Age { get; set; }
 
       public ICollection<Course> Courses { get; set; }
 
   }
 
   [AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
   public class CheckSexAttribute : ValidationAttribute
   {
       protected override ValidationResult IsValid(object value, ValidationContext validationContext)
       {
           bool result= value.ToString() == "男" || value.ToString() == "女";
           return result ? ValidationResult.Success : new ValidationResult("性别必须为男或者女");
       }
   }

除此之外还可以通过 RegularExpressionAttribute,自己来定义一些相关的验证规则,继续以上面的性别为例,进行相关的验证。

修改student如下:

public class Student
   {
       public int Id { get; set; }
        
       [Required]
       [MinLength(3,ErrorMessage = "名称长度至少为3")]
       [Display(Name = "名称")]
       public string Name { get; set; }
       
       [RegularExpression("[0-1]",ErrorMessage = "性别只能为数字0(男)或者1(女)")]
       public string Sex { get; set; }
       [Range(16,100,ErrorMessage = "年龄范围为16-100")]
       public int Age { get; set; }
       public ICollection<Course> Courses { get; set; }
   }

 

常用验证如下:

RequiredAttribute:用于验证必需数据字段。
RangeAttribute:用于验证数值字段的值是否在指定的范围之内
StringLengthAttribute:用于验证目标字段的字符串长度是否在指定的范围之内。
MaxLengthAttribute/MinLengthAttribute:用于验证字符/数组字典的长度是否小于/大于指定的上/下限。
CreditCardAttribute 用于验证数据字段值是信用卡号。
EmailAddressAttribute 用于验证电子邮件
PhoneAttribute 用于验证是否为电话格式
UrlAttribute 用于验证是否为Url
KeyAttribute 验证是否唯一
DisplayAttribute 指定显示的字符串
CompareAttribute 提供用于比较两个属性的特性。
特别说明:
在构建实体类的时候,如果不特别指明Key值,这个时候,EFCore会默认将
Id,类名+Id的的属性作为数据表的主键。

数据库架构和实体类不一致的冲突
实体属性不需要存入数据库
给学生类添加一个新的属性 nickname (外号) ,但是这个属性不需要存入数据库,那么只需在nickname上加个NotMapped特性 就不会跟数据表相对应了。

标签:set,Name,get,验证,校验,特性,ErrorMessage,EFCore,public
来源: https://www.cnblogs.com/daboluo/p/16514192.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有