[英]Simple LINQ query gets NullReferenceException even though SQL Server table has data
我有一個簡單的Linq查詢,突然失敗。 直到昨天才解決,我無法確定問題所在。
該查詢只是從SQL Server獲取完整的視圖
using(JobEntities JE = new JobEntities())
{
var BatchData = (from x in JE.vwBatchObjectActiveBatches select x).ToList();
}
從昨天開始,此行將獲得
NullReferenceException(對象引用未設置為對象的實例)
我的懷疑是,用戶輸入了錯誤的數據,導致該視圖在SQL Server上失敗,但是我檢查了SQL Server本身,該視圖運行良好並填充了數據。
該查詢運行在一個較大的函數中,該函數從許多地方加載數據,因此,我創建了一個測試用例,我只需要加載主窗口並直接在后面的代碼中運行此查詢,以確保沒有其他因素影響它,並且查詢仍然失敗。 我在該項目中運行的所有其他Linq查詢仍然有效,只有此一個失敗。 該應用程序目前尚無任何生產,並且至少已經靜止了幾個月。
當我在監視窗口中查看JE時,可以看到vwBatchObjectActiveBatches
,它在Local部分中列出了164條記錄-這與SQL Server上的視圖結果匹配。 展開結果視圖再次顯示空錯誤。
如何查找和修復導致此查詢失敗的原因? 為什么結果視圖顯示錯誤,但是本地行顯示我嘗試獲取的數據?
看起來您的數據庫返回了NULL
,而Entity Framework則不希望/不允許它。 返回的數據應符合其數據模型對象的定義。
解決方案:或者“修復”數據,或者修復生成數據的查詢,或者更改數據模型對象的定義以允許沖突字段為NULL
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.