我有以下查詢。
var railcarInfo = await (from rt in DbContext.RailcarTrips
where rt.WaybillRailcar.RailcarNumber == clm.RailcarNumber &&
rt.WaybillRailcar.Waybill.CreateDate <= clm.SightingDate
orderby rt.WaybillRailcar.Waybill.CreateDate descending
select new
{
RailcarTrip = rt,
WaybillCreateDate = rt.WaybillRailcar.Waybill.CreateDate,
IsLoaded = rt.WaybillRailcar.Weight > 0
})
.AsNoTracking()
.FirstOrDefaultAsync();
但出于某種原因,Visual Studio立即在此查詢之后決定此處的 'railcarInfo' 不為空。

重點FirstOrDefaultAsync()是它回傳集合中的第一項,如果集合為空,則回傳 null。這里肯定可以為空。誰能看出為什么 Visual Studio 似乎在這里感到困惑?
uj5u.com熱心網友回復:
正如有關此功能和 EF 的檔案中所述:
在 EF Core 6.0 之前,公共 API 表面沒有針對可空性進行注釋(公共 API 是“null-oblivious”),這使得在 NRT 功能打開時使用有時會很尷尬。這尤其包括 EF Core 公開的異步 LINQ 運算子,例如 FirstOrDefaultAsync。從 EF Core 6.0 開始,公共 API 已完全注釋為可空性。
所以你可能使用 EF < 6.0 的版本
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/341766.html
上一篇:使用LINQ合并3個串列
