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

public static List<ValidationResult> ExecuteValidation(DbContext context) { List<ValidationResult> result = new List<ValidationResult>(); var models = context.ChangeTracker.Entries() .Where(p => (p.State == EntityState.Added) || (p.State == EntityState.Modified)); foreach (var model in models) { var entity = model.Entity; var valProvider = new ValidationDbContextServiceProvider(context); var valContext = new ValidationContext(entity valProvider null); List<ValidationResult> error = new List<ValidationResult>(); if(!Validator.TryValidateObject(entityvalContexterrortrue)) { result.AddRange(error); return result.ToList();

在上述代码中我们通过 ChangeTracker 方法找出被追踪的实体 , 然后过滤出需要添加和更新的实体 , 对这些实体进行数据验证 。 最后我们通过 Validator 中的 TryValidateObject 方法验证实体数据并返回校验错误信息 。 在业务代码中我们调用前面定义的 ExecuteValidation 方法进行验证 , 如果验证通过就调用 EF Core 的 SaveChange() 方法 , 如果未通过就调用相应的处理代码 , 代码片段如下:

推荐阅读