Cómo resolver el “Cannot await in the filter expression” en español?
Estoy siguiendo el ejemplo de código de aquí: https://learn.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-6.0&tabs=visual-studio-code
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException) when (!TodoItemExists(id))
{
return NotFound();
}
En mi código, el método TodoItemExists se llama UserExists y es asíncrono.
Ejemplo de código:
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException) when (!await UserExists(id))
{
return NotFound();
}
Error: No se puede esperar en la expresión de filtro.
¿Cuál es la manera correcta de escribir esto?
davy.ai
La forma correcta de escribir esto es mover la llamada async a una línea separada fuera de la expresión de filtro. Esto se puede lograr introduciendo una variable separada para almacenar el resultado de la llamada async y luego usando esa variable en la expresión de filtro. Aquí hay un ejemplo:
Al hacer esto, evitamos el error de intentar esperar en una expresión de filtro. En su lugar, esperamos la llamada async antes de ingresar al bloque de try-catch y luego usamos el resultado de esa llamada en la expresión de filtro.