public async Task <DomainModels.SecondaryObject> CreateAsync(Guid primaryObjectId, ApiModels.SecondaryObject inputModel) { Ensure.That(primaryObjectId, nameof(primaryObjectId)).IsNotEmpty(); Ensure.That(inputModel, nameof(inputModel)).IsNotNull(); var domainPrimaryObject = await _primaryObjectRepoistory.GetByIdAsync(primaryObjectId); Ensure.That(domainPrimaryObject, nameof(domainPrimaryObject)) .WithException(_ => { var ex = new DemoEntityNotFoundException(); ex.Data.Add($"{nameof(DomainModels.PrimaryObject)}.{nameof(DomainModels.PrimaryObject.Id)}", primaryObjectId.ToString()); return(ex); }) .IsNotNull(); var domainSecondaryObject = new DomainModels.SecondaryObject(Guid.NewGuid()); Map(inputModel, domainSecondaryObject); domainSecondaryObject.PrimaryObject = domainPrimaryObject; domainSecondaryObject.PrimaryObject_Id = domainPrimaryObject.Id; domainPrimaryObject.SecondaryObjects.Add(domainSecondaryObject); await _unitOfWork.SaveChangesAsync(); return(domainSecondaryObject); }
public async Task DeleteAsync(Guid id) { Ensure.That(id, nameof(id)).IsNotEmpty(); var domainPrimaryObject = await _primaryObjectRepoistory.GetByIdAsync(id); Ensure.That(domainPrimaryObject, nameof(domainPrimaryObject)) .WithException(_ => GetDemoEntityNotFoundException(id)) .IsNotNull(); foreach (var domainSecondaryObject in domainPrimaryObject.SecondaryObjects.ToArray()) { domainPrimaryObject.SecondaryObjects.Remove(domainSecondaryObject); _secondaryObjectRepository.Remove(domainSecondaryObject); } _primaryObjectRepoistory.Remove(domainPrimaryObject); await _unitOfWork.SaveChangesAsync(); }