C#异步等待未完成

时间:2018-09-18 19:27:16

标签: c# async-await dapper

我有一个异步Web api控制器中相当基本的流程。该代码如下所示:

public async Task<IHttpActionResult> Put([FromBody] ObjectType myObject)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    try
    {
        this.callbasicMethod();
        myObject = await myRepository.UpdateDB(myObject);
        await myRepository.DeleteSomeStuff(myObject.someProperty);
        var table = Helper.CreateDataTable(myObject.anotherProperty);
        await myRepository.InsertSomeStuff(table);
        returnOk(myObject);
    }
    catch (Exception ex)
    {
        return BadRequest(ex.Message);
    }
}

问题是没有任何数据库调用(重要的是更新调用)执行。如果我在更新调用周围的此方法中设置了一个断点,则一切正常。就像某种种族状况正在发生或什么。如果您对如何解决此问题或我做错了什么有任何想法,请告诉我。

另外,如果您需要任何说明,请告诉我,我显然不得不混淆了代码以保护我工作的公司的知识产权。如果有帮助,被调用的方法将自己异步实现,并调用异步dapper方法与数据库进行通信。

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方法,但不是真正的答案。基本上,被调用的两个数据库调用是从表中删除一些数据,然后在完成之后将一些数据添加到同一表中。我编写了一个存储过程来处理此问题,然后在应用程序的数据层中编写了一个方法,现在一切正常。