EF核心-FirstOrDefaultAsync引发Null参考异常

Anu*_*raj -1 c# entity-framework-core ef-core-3.0

我正在尝试使用XUnit测试ASP.NET Core Web API控制器。我直接在控制器中使用DBContext。在生产中,我正在使用SqlServer,并且为了进行测试,我正在使用InMemory提供程序。当我测试一些使用EF Core FirstOrDefaultAsync方法的代码时,应用程序将引发空引用异常。我要查找的值在数据库中不存在。根据我的理解,它应该返回NULL,不应引发异常。

我尝试了类似的东西where(x => x.Id = id).FirstOrDefaultAsync(),它也抛出了相同的null引用异常。

空引用异常

当我尝试类似

var exist = await list.AnyAsync(x => x.Id == id);
if(!exist)
{
return NotFound();
}
var user = await list.FirstAsync(x => x.Id == id);
return user;
Run Code Online (Sandbox Code Playgroud)

有用。dbcontext和users属性都是值,这些值不为null。

立即窗口

请帮忙。

Iva*_*oev 5

该异常不是由您的代码引起的。目前,我能够使用最新的EF Core 3.0 Preview 7重现它。它是通过内存提供程序FirstOrDefault[Async]SingleOrDefault[Async]方法实现的。First[Async]或不会发生Single[Async]

无论如何,这里的主要问题是您使用的是预览(beta)软件,该软件可能会出现问题。

只需切换到最新的稳定EF Core 2版本,并等待3.0发布,然后再尝试在生产代码中使用它即可。

  • 我正在使用 EF Core v2.1 并遇到了与 OP 完全相同的问题 (2认同)
  • 抱歉,我不是在问任何问题,我是说我在使用 v2.1(即 LTS)时遇到了同样的问题,或者至少我是这么认为的。队友的欢呼声。 (2认同)
  • 我也有同样的问题。使用 v2.2。 (2认同)