是否建议等待“_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
};
}
}
请告诉我你的想法以及我的理解是否正确
你应该
await
它。
如果不这样做,那么您的代码将在操作成功之前返回成功。一些验证(例如唯一和外键约束)会在保存期间进行检查,直到保存完成后才能知道是否成功。 此外,正常模式是在控制器操作完成时处置数据库上下文;这可能会取消保存(返回成功响应后)。
最后,只要您的代码超出了请求的寿命,它可能会在主机关闭时(例如,在滚动升级期间)毫无警告地终止。