当我不需要结果时,我应该等待异步 SaveToDb 方法吗?

问题描述 投票:0回答:1

是否建议等待“_teamRepository.AddTeamToDbAsync(teamToAdd)”方法?它只是为了保存到数据库,无需进一步验证等。如果我不等待保存操作,我会提供更快的结果,但是否存在一些我不知道的风险?

public async Task<OperationResult<TeamDto>> AddTeamAsync(TeamForCreationDto team)
        {
            var teamToAdd = _mapper.Map<Team>(team);
            bool IsNameTaken = await CheckIfTeamExistsAsync(team.Name);

            if (IsNameTaken)
            {
                return new OperationResult<TeamDto>
                {
                    IsSuccess = false,
                    ErrorMessage = "Provided name is already taken.",
                    HttpResponseCode = 409
                };
            }
            else
            {
                _teamRepository.AddTeamToDbAsync(teamToAdd);          // HERE
                var teamToReturn = _mapper.Map<TeamDto>(teamToAdd);
                return new OperationResult<TeamDto>
                {
                    IsSuccess = true,
                    Data = teamToReturn,
                    HttpResponseCode = 201
                };
            }
        }

请告诉我你的想法以及我的理解是否正确

c# asp.net-core asynchronous asp.net-web-api async-await
1个回答
0
投票

你应该

await
它。

如果不这样做,那么您的代码将在操作成功之前返回成功。一些验证(例如唯一和外键约束)会在保存期间进行检查,直到保存完成后才能知道是否成功。 此外,正常模式是在控制器操作完成时处置数据库上下文;这可能会取消保存(返回成功响应后)。

最后,只要您的代码超出了请求的寿命,它可能会在主机关闭时(例如,在滚动升级期间)毫无警告地终止。

© www.soinside.com 2019 - 2024. All rights reserved.