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

0 c# asynchronous async-await asp.net-web-api asp.net-core

是否建议等待“_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
                };
            }
        }
Run Code Online (Sandbox Code Playgroud)

让我知道你的想法以及我的理解是否正确

Ste*_*ary 5

你应该await这样做。

如果不这样做,那么您的代码将在操作成功之前返回成功。一些验证(例如唯一和外键约束)会在保存过程中进行检查,直到保存完成后才能知道是否成功。

此外,正常模式是在控制器操作完成时处置数据库上下文;这可能会取消保存(返回成功响应后)。

最后,只要您的代码超出了请求的寿命,它就可能在主机关闭时(例如,在滚动升级期间)在没有警告的情况下被终止。