首页 > 解决方案 > 为什么在 Entity Framework Core 中使用 FindAsync 时出现空引用异常?

问题描述

使用 .NET Core 3.1 我有一个简单的控制器方法,定义如下:

[HttpGet( "{id}" )]
public async Task<ActionResult<Animal>> Get( [FromRoute] int id )
{
    var animal = await _dbContext.Animal.FindAsync( id );
    if( animal == null ) return NotFound();
    return Ok( animal );
}

当使用有效 id 调用时,这会从 FindAsync 中引发空引用异常。

如果我转换为同步方法,并改用 Find,它会按预期工作。

我尝试将 Task 更改为 ValueTask,或将 .AsTask() 添加到 .FindAsync(),但没有任何区别。如何让异步调用正常工作?

标签: .net-coreentity-framework-core

解决方案


也许你可以试试这个语法

var animal = await _dbContext.Animal.FirstOrDefaultAsync(x => x.Id == id);


推荐阅读