[英]System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or property cannot be called on Null values
[英]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 的值,但錯誤可能是由其他相關實體引起的,例如Roles
、 Claims
等
因此,我想清楚地了解導致問題的第一個字段(如果有更多字段)是什么。
如果可能的話當然!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.