白话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() 方法 , 如果未通过就调用相应的处理代码 , 代码片段如下:
推荐阅读
- 我的世界|我的世界:Entity303 真实档案实录!8年前,一段灵异的目击事件
- 身份管理业者Ping Identity交招股书:拟募资1亿美元
- 5句大白话看懂央行新房贷利率机制调整
- 海信S7全面解读:用大白话告诉你这到底是个什么产品
- 系统小技巧:深入全面掌握.NET Framework
- 《天官赐福》漫画,花城谢怜寻国师,谢怜为何变成“白话真仙”?
- 智能锁真相大白话:“小黑盒”竟然不是特斯拉线圈?
- 谷大白话与a土人, 正如职场中的你我