白话Entity Framework Core数据验证( 四 )
if(context.ExecuteValidation().Any()) { foreach(var error in context.ExecuteValidation()) { //处理代码 else { context.SaveChange();
讲到这里估计会有很多小伙伴说每个业务代码中都要这么写太麻烦了 , 而且也产生了大量的重复代码 。 那么重复代码这个问题该怎么解决呢?这时一定有部分小伙伴想到了通过重写 SaveChanges 方法 , 将验证代码加入到这个方法中 , 这样就可以解决刚才的那个问题 , 达到一劳永逸的效果 。 具体代码如下:
public override int SaveChanges(bool acceptAllChangesOnSucces) { var provider = ((IInfrastructure<IServiceProvider>)this).Instance; var items = new Dictionary<object object>(); var models = this.ChangeTracker.Entries() .Where( p => (p.State == EntityState.Added)||(p.State==EntityState.Modified)); foreach (var model in models) { var entity = model.Entity; var context = new ValidationContext(entity provider items); List<ValidationResult> results = new List<ValidationResult>(); if(!Validator.TryValidateObject(entitycontextresultstrue)) { foreach (var result in results) { if(result!=ValidationResult.Success) { throw new ValidationException(result.ErrorMessage); return base.SaveChanges();
推荐阅读
- 我的世界|我的世界:Entity303 真实档案实录!8年前,一段灵异的目击事件
- 身份管理业者Ping Identity交招股书:拟募资1亿美元
- 5句大白话看懂央行新房贷利率机制调整
- 海信S7全面解读:用大白话告诉你这到底是个什么产品
- 系统小技巧:深入全面掌握.NET Framework
- 《天官赐福》漫画,花城谢怜寻国师,谢怜为何变成“白话真仙”?
- 智能锁真相大白话:“小黑盒”竟然不是特斯拉线圈?
- 谷大白话与a土人, 正如职场中的你我