Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/PersistenceRegistry.cs =================================================================== diff -u -rc7ac7512bbc38609f60d8d8e383f3186cc79a156 -r5f2d5644a18d8d7e40a0bbabb3dc9a2480853a81 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/PersistenceRegistry.cs (.../PersistenceRegistry.cs) (revision c7ac7512bbc38609f60d8d8e383f3186cc79a156) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/PersistenceRegistry.cs (.../PersistenceRegistry.cs) (revision 5f2d5644a18d8d7e40a0bbabb3dc9a2480853a81) @@ -537,155 +537,170 @@ /// The from which to remove the entities. internal void RemoveUntouched(IRingtoetsEntities dbContext) { - foreach (ProjectEntity projectEntities in dbContext.ProjectEntities - .Where(e => e.ProjectEntityId > 0) - .ToArray()) + IList orphanedProjectEntities = new List(); + foreach (ProjectEntity projectEntity in dbContext.ProjectEntities + .Where(e => e.ProjectEntityId > 0)) { - if (!projects.ContainsKey(projectEntities)) + if (!projects.ContainsKey(projectEntity)) { - dbContext.ProjectEntities.Remove(projectEntities); + orphanedProjectEntities.Add(projectEntity); } } + dbContext.ProjectEntities.RemoveRange(orphanedProjectEntities); + IList orphanedAssessmentSectionEntities = new List(); foreach (AssessmentSectionEntity assessmentSectionEntity in dbContext.AssessmentSectionEntities - .Where(e => e.AssessmentSectionEntityId > 0) - .ToArray()) + .Where(e => e.AssessmentSectionEntityId > 0)) { if (!assessmentSections.ContainsKey(assessmentSectionEntity)) { - dbContext.AssessmentSectionEntities.Remove(assessmentSectionEntity); + orphanedAssessmentSectionEntities.Add(assessmentSectionEntity); } } + dbContext.AssessmentSectionEntities.RemoveRange(orphanedAssessmentSectionEntities); + IList failureMechanismEntities = new List(); foreach (FailureMechanismEntity failureMechanismEntity in dbContext.FailureMechanismEntities - .Where(e => e.FailureMechanismEntityId > 0) - .ToArray()) + .Where(e => e.FailureMechanismEntityId > 0)) { if (!failureMechanisms.ContainsKey(failureMechanismEntity)) { - dbContext.FailureMechanismEntities.Remove(failureMechanismEntity); + failureMechanismEntities.Add(failureMechanismEntity); } } + dbContext.FailureMechanismEntities.RemoveRange(failureMechanismEntities); + IList failureMechanismSectionEntities = new List(); foreach (FailureMechanismSectionEntity failureMechanismSectionEntity in dbContext.FailureMechanismSectionEntities - .Where(e => e.FailureMechanismSectionEntityId > 0) - .ToArray()) + .Where(e => e.FailureMechanismSectionEntityId > 0)) { if (!failureMechanismSections.ContainsKey(failureMechanismSectionEntity)) { - dbContext.FailureMechanismSectionEntities.Remove(failureMechanismSectionEntity); + failureMechanismSectionEntities.Add(failureMechanismSectionEntity); } } + dbContext.FailureMechanismSectionEntities.RemoveRange(failureMechanismSectionEntities); + IList hydraulicLocationEntities = new List(); foreach (HydraulicLocationEntity hydraulicLocationEntity in dbContext.HydraulicLocationEntities - .Where(e => e.HydraulicLocationEntityId > 0) - .ToArray()) + .Where(e => e.HydraulicLocationEntityId > 0)) { if (!hydraulicLocations.ContainsKey(hydraulicLocationEntity)) { - dbContext.HydraulicLocationEntities.Remove(hydraulicLocationEntity); + hydraulicLocationEntities.Add(hydraulicLocationEntity); } } + dbContext.HydraulicLocationEntities.RemoveRange(hydraulicLocationEntities); + IList calculationGroupEntities = new List(); foreach (CalculationGroupEntity calculationGroupEntity in dbContext.CalculationGroupEntities - .Where(e => e.CalculationGroupEntityId > 0) - .ToArray()) + .Where(e => e.CalculationGroupEntityId > 0)) { if (!calculationGroups.ContainsKey(calculationGroupEntity)) { - dbContext.CalculationGroupEntities.Remove(calculationGroupEntity); + calculationGroupEntities.Add(calculationGroupEntity); } } + dbContext.CalculationGroupEntities.RemoveRange(calculationGroupEntities); + IList pipingCalculationEntities = new List(); foreach (PipingCalculationEntity pipingCalculationEntity in dbContext.PipingCalculationEntities - .Where(e => e.PipingCalculationEntityId > 0) - .ToArray()) + .Where(e => e.PipingCalculationEntityId > 0)) { if (!pipingCalculations.ContainsKey(pipingCalculationEntity)) { - dbContext.PipingCalculationEntities.Remove(pipingCalculationEntity); + pipingCalculationEntities.Add(pipingCalculationEntity); } } + dbContext.PipingCalculationEntities.RemoveRange(pipingCalculationEntities); + IList stochasticSoilModelEntities = new List(); foreach (StochasticSoilModelEntity stochasticSoilModelEntity in dbContext.StochasticSoilModelEntities - .Where(e => e.StochasticSoilModelEntityId > 0) - .ToArray()) + .Where(e => e.StochasticSoilModelEntityId > 0)) { if (!stochasticSoilModels.ContainsKey(stochasticSoilModelEntity)) { - dbContext.StochasticSoilModelEntities.Remove(stochasticSoilModelEntity); + stochasticSoilModelEntities.Add(stochasticSoilModelEntity); } } + dbContext.StochasticSoilModelEntities.RemoveRange(stochasticSoilModelEntities); + IList stochasticSoilProfileEntities = new List(); foreach (StochasticSoilProfileEntity stochasticSoilProfileEntity in dbContext.StochasticSoilProfileEntities - .Where(e => e.StochasticSoilProfileEntityId > 0) - .ToArray()) + .Where(e => e.StochasticSoilProfileEntityId > 0)) { if (!stochasticSoilProfiles.ContainsKey(stochasticSoilProfileEntity)) { - dbContext.StochasticSoilProfileEntities.Remove(stochasticSoilProfileEntity); + stochasticSoilProfileEntities.Add(stochasticSoilProfileEntity); } } + dbContext.StochasticSoilProfileEntities.RemoveRange(stochasticSoilProfileEntities); + IList soilProfileEntities = new List(); foreach (SoilProfileEntity soilProfileEntity in dbContext.SoilProfileEntities - .Where(e => e.SoilProfileEntityId > 0) - .ToArray()) + .Where(e => e.SoilProfileEntityId > 0)) { if (!soilProfiles.ContainsKey(soilProfileEntity)) { - dbContext.SoilProfileEntities.Remove(soilProfileEntity); + soilProfileEntities.Add(soilProfileEntity); } } + dbContext.SoilProfileEntities.RemoveRange(soilProfileEntities); + IList soilLayerEntities = new List(); foreach (SoilLayerEntity soilLayerEntity in dbContext.SoilLayerEntities - .Where(e => e.SoilLayerEntityId > 0) - .ToArray()) + .Where(e => e.SoilLayerEntityId > 0)) { if (!soilLayers.ContainsKey(soilLayerEntity)) { - dbContext.SoilLayerEntities.Remove(soilLayerEntity); + soilLayerEntities.Add(soilLayerEntity); } } + dbContext.SoilLayerEntities.RemoveRange(soilLayerEntities); + IList surfaceLineEntities = new List(); foreach (SurfaceLineEntity surfaceLineEntity in dbContext.SurfaceLineEntities - .Where(e => e.SurfaceLineEntityId > 0) - .ToArray()) + .Where(e => e.SurfaceLineEntityId > 0)) { if (!surfaceLines.ContainsKey(surfaceLineEntity)) { - dbContext.SurfaceLineEntities.Remove(surfaceLineEntity); + surfaceLineEntities.Add(surfaceLineEntity); } } + dbContext.SurfaceLineEntities.RemoveRange(surfaceLineEntities); + IList surfaceLinePointEntities = new List(); foreach (SurfaceLinePointEntity surfaceLinePointEntity in dbContext.SurfaceLinePointEntities - .Where(e => e.SurfaceLinePointEntityId > 0) - .ToArray()) + .Where(e => e.SurfaceLinePointEntityId > 0)) { if (!surfaceLinePoints.ContainsKey(surfaceLinePointEntity)) { - dbContext.SurfaceLinePointEntities.Remove(surfaceLinePointEntity); + surfaceLinePointEntities.Add(surfaceLinePointEntity); } } + dbContext.SurfaceLinePointEntities.RemoveRange(surfaceLinePointEntities); + IList characteristicPointEntities = new List(); foreach (CharacteristicPointEntity characteristicPointEntity in dbContext.CharacteristicPointEntities - .Where(e => e.CharacteristicPointEntityId > 0) - .ToArray()) + .Where(e => e.CharacteristicPointEntityId > 0)) { if (!characteristicPoints.ContainsKey(characteristicPointEntity)) { - dbContext.CharacteristicPointEntities.Remove(characteristicPointEntity); + characteristicPointEntities.Add(characteristicPointEntity); } } + dbContext.CharacteristicPointEntities.RemoveRange(characteristicPointEntities); + IList pipingFailureMechanismMetaEntities = new List(); foreach (PipingFailureMechanismMetaEntity pipingFailureMechanismMetaEntity in dbContext.PipingFailureMechanismMetaEntities - .Where(e => e.PipingFailureMechanismMetaEntityId > 0) - .ToArray()) + .Where(e => e.PipingFailureMechanismMetaEntityId > 0)) { if (!pipingProbabilityAssessmentInputs.ContainsKey(pipingFailureMechanismMetaEntity)) { - dbContext.PipingFailureMechanismMetaEntities.Remove(pipingFailureMechanismMetaEntity); + pipingFailureMechanismMetaEntities.Add(pipingFailureMechanismMetaEntity); } } + dbContext.PipingFailureMechanismMetaEntities.RemoveRange(pipingFailureMechanismMetaEntities); } private bool ContainsValue(Dictionary collection, U model)