public async Task <IActionResult> DeleteDataSet(long id) { var dataSet = await aquariumDataSetRepository.GetByIdAsync(id); if (dataSet == null) { return(JsonNotFound($"AquariumDataSet ID {id} is not found.")); } if (await experimentRepository.ExistsAsync(x => x.DataSetId == id)) { return(JsonConflict($"AquariumDataSet ID {id} has been used by experiment.")); } if (await experimentPreprocessRepository.ExistsAsync(x => x.DataSetId == id)) { return(JsonConflict($"AquariumDataSet ID {id} has been used by experiment preprocess.")); } var dataSetIds = new HashSet <long>(); foreach (var dataSetVersion in aquariumDataSetVersionRepository.FindAll(x => x.AquariumDataSetId == id)) { dataSetIds.Add(dataSetVersion.DataSetId); } aquariumDataSetRepository.Delete(dataSet); unitOfWork.Commit(); foreach (var x in dataSetIds) { await dataSetLogic.ReleaseLockAsync(x); } unitOfWork.Commit(); return(JsonNoContent()); }