public async Task DeleteWithRelationship(Guid operationId) { //Apagar Operation + MachineTypeOperation(join row) + MachineType Operation operation = GetById(operationId).Result; MachineTypeRepository machineTypeRepository = new MachineTypeRepository(_context); MachineTypeOperationRepository jointablerepo = new MachineTypeOperationRepository(_context); List <MachineType> machineTypes = await jointablerepo.GetMachineTypesWithOperationId(operation.Id); foreach (MachineType machine in machineTypes) { List <MachineTypeOperation> joinsList = machine.MachineTypeOperations.ToList(); foreach (MachineTypeOperation join in joinsList) { if (join.Operation.Equals(operation)) { machine.MachineTypeOperations.Remove(join); //apagar da lista await jointablerepo.Delete(join.MachineTypeId, join.OperationId); //apagar if (machine.MachineTypeOperations.Count == 0) { //0-* Se MachineType n tiver nenhum operation n existe e é apagada await machineTypeRepository.Delete(machine.Id); } } } } await base.Delete(operationId); //apagar Operation }
public async Task UpdateWithRelationship(Guid id, MachineType machineType) { ICollection <MachineTypeOperation> machineTypeOperations = await machineTypeOperationRepository.GetMachineTypeOperationsByMachineType(id); foreach (var machineTypeOperation in machineTypeOperations) { Console.WriteLine(machineTypeOperation); await machineTypeOperationRepository.Delete(machineTypeOperation.MachineTypeId, machineTypeOperation.OperationId); } await Update(id, machineType); }