/// <summary> /// Pres the save. /// </summary> /// <param name="dbContext">The database context.</param> /// <param name="state">The state.</param> public override void PreSaveChanges(DbContext dbContext, System.Data.Entity.EntityState state) { if (state == System.Data.Entity.EntityState.Deleted) { ChildGroupTypes.Clear(); } }
/// <summary> /// Pres the save. /// </summary> /// <param name="dbContext">The database context.</param> /// <param name="state">The state.</param> public override void PreSaveChanges(Rock.Data.DbContext dbContext, System.Data.Entity.EntityState state) { if (state == System.Data.Entity.EntityState.Deleted) { ChildGroupTypes.Clear(); // manually delete any grouprequirements of this grouptype since it can't be cascade deleted var groupRequirementService = new GroupRequirementService(dbContext as RockContext); var groupRequirements = groupRequirementService.Queryable().Where(a => a.GroupTypeId.HasValue && a.GroupTypeId == this.Id).ToList(); if (groupRequirements.Any()) { groupRequirementService.DeleteRange(groupRequirements); } } // clean up the index if (state == System.Data.Entity.EntityState.Deleted && IsIndexEnabled) { this.DeleteIndexedDocumentsByGroupType(this.Id); } else if (state == System.Data.Entity.EntityState.Modified) { // check if indexing is enabled var changeEntry = dbContext.ChangeTracker.Entries <GroupType>().Where(a => a.Entity == this).FirstOrDefault(); if (changeEntry != null) { var originalIndexState = (bool)changeEntry.OriginalValues["IsIndexEnabled"]; if (originalIndexState == true && IsIndexEnabled == false) { // clear out index items this.DeleteIndexedDocumentsByGroupType(Id); } else if (IsIndexEnabled == true) { // if indexing is enabled then bulk index - needed as an attribute could have changed from IsIndexed BulkIndexDocumentsByGroupType(Id); } } } base.PreSaveChanges(dbContext, state); }