[英]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.