簡體   English   中英

Entity Framework Core 6 - System.Data.SqlTypes.SqlNullValueException:數據為 Null。無法對 Null 值調用此方法或屬性

[英]Entity Framework Core 6 - System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or property cannot be called on Null values

我在 .NET 6.0 上使用 EF Core 6 並查看此錯誤:

System.Data.SqlTypes.SqlNullValueException: 數據為 Null。無法對 Null 值調用此方法或屬性

錯誤消息應指示 EF Core 正在嘗試讀取所需屬性的值,即數據庫中不應具有 null 值的屬性,而是底層數據讀取器在某些記錄中報告該屬性的 null 值.

Entity Framework Core:`SqlNullValueException:數據為 Null。` 如何排除故障?

禁用nullable reference type錯誤消失,一切正常。

是否可以准確調查導致此問題的字段,調試代碼並沒有提供更多詳細信息。

是否有一些技術可以獲取違規字段的名稱?

在視覺上我沒有發現數據庫和 model 之間有任何差異

查看與可空引用類型相關的文檔

在可空感知上下文中:

引用類型 T 的變量必須用非空值初始化,並且永遠不能分配可能為 null 的值。

引用類型 T 的變量? 可以使用 null 初始化或分配 null,但在取消引用之前需要根據 null 進行檢查。

假設一個實體:

public class SomeEntity   
{   
    [Key]     
    public int Id { get; set; }       
    public string Name { get; set; }        
    public string Prop { get; set; }    
}

如果啟用可為空的引用類型,則 Name 和 Prop 屬性將永遠不會分配給 null

假設數據庫:

在此處輸入圖像描述 在此處輸入圖像描述

當您從 db 讀取數據並將 db 中的 null 值分配給您的實體時,您會得到您顯示的錯誤

是否可以准確調查導致此問題的字段

所有屬性類型都是 T 而不是 T? 在您的實體中,該列可能是 null 在數據庫中會導致此問題

禁用可為 null 的引用類型和設置您的屬性,該屬性在 db 中可能具有 null 值和 T? 都會解決這個問題。

例如,在我的例子中,數據庫中的 Name 列和 Prop 列可能是 null,當你檢查你的實體時,Name 和 Prop 屬性應該是字符串類型? 而不是字符串。

是的,這就是原因。 但我的問題(也許不是很清楚,這是我的錯誤)是關於如何從調試器、調用堆棧或冗長的 output 中獲取某種通知,指示哪個字段具有 null 值

手動驗證不是那么容易,因為我的實體是 as.net 身份數據庫的自定義

EG:調用_userManager.FindByNameAsync我得到了這個錯誤

顯然我已經填充了所有可為 null 的值,但錯誤可能是由其他相關實體引起的,例如RolesClaims

因此,我想清楚地了解導致問題的第一個字段(如果有更多字段)是什么。

如果可能的話當然!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM