編輯:這不是無知的基本編程(如試圖解引用空對象引用)的問題。實體框架6查詢生成NullReferenceException
編輯:在Linqpad中添加了來自EF的堆棧跟蹤。
使用EF6,我有一個非常簡單的查詢:
var menu = dbcontext.Tree.Where(t => t.Left > 2 && t.Right < 10).ToList();
這個工作的權利,直到它神祕停止。 dbcontext.Tree
是SQL Server 2012中的一個視圖。使用Linqpad5,我得到了我期望使用其內置連接的結果。建立一個EF連接到我的項目,我得到了NRE。檢查SQL,我可以將其複製並粘貼到SQL查詢窗口中,並獲得正確的結果。我也可以在沒有Where調用的情況下獲得NRE。
我試過從數據庫更新我的模型來刷新任何東西。我嘗試從模型中刪除視圖並進行更新。我試過完全刪除模型並重新創建它。我重新啓動了Visual Studio和我的電腦。我得到相同的查詢NRE。我不知道還有什麼我可以嘗試,而且這個NRE對我來說毫無意義,因爲我得到了我期望使用除EF之外的所有結果的結果。如果我之前沒有看到它的話,我會把它記錄爲EF的一個錯誤。
有沒有人處理過這個?在線搜索這種特定的情況並沒有產生任何結果。
堆棧跟蹤:
at System.Data.Entity.Core.EntityKey.AddHashValue(Int32 hashCode, Object keyValue)
at System.Data.Entity.Core.EntityKey.GetHashCode()
at System.Collections.Generic.GenericEqualityComparer`1.GetHashCode(T obj)
at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
at System.Data.Entity.Core.Objects.ObjectStateManager.TryGetEntityEntry(EntityKey key, EntityEntry& entry)
at System.Data.Entity.Core.Objects.ObjectStateManager.FindEntityEntry(EntityKey key)
at System.Data.Entity.Core.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly[TEntity](Func`2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet)
at lambda_method(Closure , Shaper)
at System.Data.Entity.Core.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper)
at System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.SimpleEnumerator.MoveNext()
at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
請在將其標記爲可能的副本之前,充分理解被問到的問題。 – Pfhoenix
請包括[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。另請閱讀[我如何提出一個好問題](http://stackoverflow.com/help/how-to-ask)。由於您的問題目前已經編寫,所以NRE的副本是您問題的唯一和最佳解決方案。您提供了沒有堆棧跟蹤,沒有提及什麼是實際爲空(或不是這個問題:例如'dbcontext' null?是'dbcontext.Tree' null?是結果dbcontext.Tree.ToList()null或拋出NRE )或其他任何細節。 – Igor
因此,數據中的所有樹都具有「Left」和「Right」的值? – trailmax