.net-core - 为什么在 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(),但没有任何区别。如何让异步调用正常工作?
解决方案
也许你可以试试这个语法
var animal = await _dbContext.Animal.FirstOrDefaultAsync(x => x.Id == id);
推荐阅读
- python - 特征缩放
- python - 有人可以帮助解释这个回溯算法中的递归吗?
- android - ViewPager 在 CoordinatorLayout 内时不会垂直滚动
- image - 图像 URL 的 FXML 变量标记
- python - 如何使这张图表更易于阅读?
- javascript - React Native:使用按钮运行一个类
- node.js - 使用 mongoose 检索不同的聚合字段
- c++ - 自动函数返回类型 + 右值重载 = 模棱两可的调用?
- javascript - ajax加载器加载时隐藏导航栏
- java - 如何使用 LambdaMetaFactory 在运行时创建代理对象?