public override int SaveChanges() { ValidationMessageCollection validationMessages; validationMessages = new ValidationMessageCollection(); foreach (DbEntityEntry entry in this.ChangeTracker.Entries().Where(x => x.State == EntityState.Added || x.State == EntityState.Modified)) { validationMessages.AddRange((entry.Entity as Entity).Validate()); } if (validationMessages.Any(x => x.ValidationLevel == ValidationLevel.Error)) { // we found invalid objects that were being saved => prevent saving them to the database throw new ValidationException(validationMessages); } else { return(base.SaveChanges()); } }