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());
            }
        }