我正在努力理解一些事情。我有一个 .Net Core 2.2 Web API,带有一个 MySQL 8 数据库,并使用 Pomelo 库连接到 MySQL 服务器。
我有一个看起来像这样的 PUT 操作方法:
// PUT: api/Persons/5
[HttpPut("{id}")]
public async Task<IActionResult> PutPerson([FromRoute] int id, Person person)
{
if (id != person.Id)
{
return BadRequest();
}
_context.Entry(person).State = EntityState.Modified;
try
{
_context.SaveChanges(); // Works
// await _context.SaveChangesAsync(); // Doesn't work
}
catch (DbUpdateConcurrencyException)
{
if (!PersonExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
根据我在上面代码片段中的评论,当我调用_context.SaveChanges()时,它可以工作(即它更新 MySQL 数据库中的相关记录,并返回 1)但是当我调用await _context.SaveChangesAsync()时,它不起作用(它不更新记录,并且返回 0)。它不会抛出异常或任何东西 - 它只是不会更新记录。
有任何想法吗?