如何确认异步EF6等待db.SaveChangesAsync()是否按预期工作?

Ala*_*an2 5 asp.net asynchronous asp.net-web-api2

我的代码如下所示:

    public async Task<IHttpActionResult> Delete(int id)
    {
        var userId = Int32.Parse(User.Identity.GetUserId());   
        UserTest userTest = await db.UserTests.FindAsync(id);
        if (userTest == null)
        {
            return NotFound();
        }
        if (userTest.UserId != userId)
        {
            return Unauthorized();
        }
        db.UserTests.Remove(userTest);
        await db.SaveChangesAsync();
        return Ok();
    }
Run Code Online (Sandbox Code Playgroud)

我认为直到db.SaveChangesAsync的所有内容都还可以,但是如何在执行返回Ok()之前确认db.SaveChangesAsync是否正常工作?理想情况下,我认为我应该检查异常和事物,但不确定如何将其放入此代码块中。

Mil*_*len 7

来自msdn:

public virtual Task<int> SaveChangesAsync()
Run Code Online (Sandbox Code Playgroud)

返回值类型:System.Threading.Tasks.Task代表异步保存操作的任务。任务结果包含写入基础数据库的对象数。

检查结果是否大于0:

if(await db.SaveChangesAsync() > 0)
{
     .....
}
Run Code Online (Sandbox Code Playgroud)

更多信息在这里

另一个选择是用try ... catchblock 包裹它:

try
{
    await db.SaveChangesAsync();
    return Ok();
}
catch (Exception ex)
{
    return NotFound(ex.Message);
}
Run Code Online (Sandbox Code Playgroud)