//private DateTime GetDateTimeNow() //{ // using (var resolver = Bootstrapper.Instance.IocManager.GetResolver()) // { // var dateTimeProvider = resolver.Resolve<IDateTimeProvider>(); // return dateTimeProvider.GetNow(); // } //} public DbChangeResult SaveChage() { var entrys = _dbContext.ChangeTracker.Entries(); bool changeFlag = false;//默认没有更改 List <ValidationResult> validationResults = new List <ValidationResult>(); foreach (var item in entrys) { if (item.State != EntityState.Unchanged) { changeFlag = true; if (item.Entity is IUpdateTimeField) { var updateTimeField = item.Entity as IUpdateTimeField; //GetDateTimeNow(); updateTimeField.UpdateTime = DateTime.Now; } } var validateList = ValidatorHelper.GetValidationResult(item.Entity); if (validateList != null && validateList.Count > 0) { validationResults.AddRange(validateList); } } if (!changeFlag) { return(new DbChangeResult(true)); } if (validationResults.Count > 0) { return(new DbChangeResult(0, false, validationResults.Select(m => new InvalidateException(m)))); } try { int changeNum = _dbContext.SaveChanges(); if (_dbChangeEventHandler.Disable) { if (changeNum > 0) { foreach (var item in entrys) { switch (item.State) { case EntityState.Deleted: _dbChangeEventHandler.OnEntityDeleted(item.Entity); break; case EntityState.Modified: _dbChangeEventHandler.OnEntityModified(item.Entity); break; case EntityState.Added: _dbChangeEventHandler.OnEntityAdded(item.Entity); break; case EntityState.Unchanged: case EntityState.Detached: default: break; } } } } return(new DbChangeResult(changeNum, changeNum > 0)); } catch (Exception ex) { _logger.LogWarning(ex, ex.Message); return(new DbChangeResult(0, false, new List <Exception>() { ex })); } }