![](/img/trans.png)
[英]EF Core throws Null Reference Exception when Null Check is done (Secondary Select with null check throws Null Reference Exception)
[英]EF Core - FirstOrDefaultAsync throws Null Reference Exception
我正在尝试使用XUnit测试ASP.NET Core Web API控制器。 我直接在控制器中使用DBContext。 在生产中,我正在使用SqlServer,并且为了进行测试,我正在使用InMemory提供程序。 当我测试一些使用EF Core FirstOrDefaultAsync
方法的代码时,应用程序将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;
有用。 dbcontext和users属性都是值,这些值不为null。
请帮忙。
该异常不是由您的代码引起的。 目前,我能够使用最新的EF Core 3.0 Preview 7来重现它。它在内存提供程序中发生FirstOrDefault[Async]
和SingleOrDefault[Async]
方法。 First[Async]
或Single[Async]
不会发生。
无论如何,这里的主要问题是您使用的是预览 (beta)软件,该软件可能会出现问题。
只需切换到最新的稳定EF Core 2版本,并等待3.0发布,然后再尝试在生产代码中使用它即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.