我有這個 linq 查詢。它抱怨警告訊息。
警告 CS8603:可能回傳空參考
代碼:
return await _applicationDbContext.Pies
.Include(x => x.Portions).AsSingleQuery()
.Include(x => x.Ingredients).AsSplitQuery()
.SingleOrDefaultAsync(x => x.Id == id);
此外,這使它變得丑陋,到處都是波浪線。
可以做些什么嗎?

查看以下SO帖子,但不知道該怎么做。
理解可能的空參考回傳
了解新的可為空參考型別警告
uj5u.com熱心網友回復:
該方法回傳一個Task<Pie>.
最后的return ...hasSingleOrDefaultAsync(...)這意味著如果它找不到匹配的專案,id它將回傳default(Pie)which 將是null.
您需要決定是否:
- 此方法可以回傳null,然后將簽名更改
Task<Pie?>為讓呼叫代碼知道它可以回傳null。 - 此方法不應該回傳 null,使用
SingleAsync(...)它以便在找不到匹配項時拋出運行時例外id。
uj5u.com熱心網友回復:
SingleOrDefaultAsync() 完全按照方法名稱中的內容進行操作,它會嘗試查找單個條目并在未找到任何內容時回傳默認值。
參考型別的默認值,Pie在這種情況下你的物件是 null 因此警告。
您可以回傳Task<Pie?>或以某種方式處理空值。一種方法是.SingleAsync()改用,如果什么也沒找到,它就會拋出 - 但因此它永遠不會回傳 null。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/399237.html
