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 MachineTypeRepository(Context context) : base(context) { //context.MachineTypes.Include(m => m.MachineTypeOperations).ToListAsync(); //context.MachineTypes.Include(m => m.Operations).ToListAsync(); machineTypeOperationRepository = new MachineTypeOperationRepository(context); }