public async Task <BlResult <ConnectionModel> > SaveAsync(ConnectionModel connectionModel) { BlResult <ConnectionModel> blResult = new BlResult <ConnectionModel>(); try { if (connectionModel is null) { throw new ArgumentNullException(nameof(connectionModel)); } EnsureTransaction(); var fetchedEntity = await _connectionRepository.GetByIdWithReferencAsync(connectionModel.Id); fetchedEntity = _mapper.Map(connectionModel, fetchedEntity); fetchedEntity.OverwritesId = null; if (connectionModel.Id > 0) { _connectionRepository.Edit(fetchedEntity); } else { fetchedEntity = _connectionRepository.Add(fetchedEntity); } await SaveChangesAsync(); blResult.Success(_mapper.Map <ConnectionModel>(fetchedEntity)); } catch (ArgumentNullException) { blResult.Fail(BLErrorCodeTypeEnum.ArgumentIsNull); } catch (Exception ex) { blResult.Fail(BLErrorCodeTypeEnum.Unknown, ex.Message, ex); } return(blResult); }