我有一个异步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方法与数据库进行通信。
答案 0 :(得分:0)
我终于找到了解决方法,但不是真正的答案。基本上,被调用的两个数据库调用是从表中删除一些数据,然后在完成之后将一些数据添加到同一表中。我编写了一个存储过程来处理此问题,然后在应用程序的数据层中编写了一个方法,现在一切正常。