0

我正在尝试使用 XUnit 测试 ASP.NET Core Web API 控制器。我直接在控制器中使用 DBContext。在生产中,我使用的是 SqlServer,而对于测试,我使用的是 InMemory 提供程序。当我测试一些使用 EF CoreFirstOrDefaultAsync方法的代码时,应用程序抛出空引用异常。我正在寻找的值在数据库中不存在。根据我的理解,它应该返回 NULL,它不应该抛出异常。

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

空引用异常

当我尝试类似

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

有用。dbcontext 和 users 属性都有值,它们不为空。

即时窗口

请帮忙。

4

1 回答 1

5

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

无论如何,这里的主要问题是您使用的是预览(测试版)软件,预计会有问题。

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

于 2019-07-25T06:16:17.093 回答