Edit: Dies ist kein Problem mit der Unkenntnis der grundlegenden Programmierung (z. B. versuchen, eine Null-Objektreferenz zu dereferenzieren).Entity Framework 6 Query generiert NullReferenceException
Bearbeiten: Die Stack-Trace von EF innerhalb Linqpad hinzugefügt.
EF6 benutzen, habe ich eine sehr einfache Abfrage:
var menu = dbcontext.Tree.Where(t => t.Left > 2 && t.Right < 10).ToList();
Das funktionierte bis, bis er auf mysteriöse Weise gestoppt. dbcontext.Tree
ist eine Sicht in SQL Server 2012. Unter Verwendung von Linqpad5 erhalte ich die Ergebnisse, die ich mit der integrierten Verbindung erwarte. Einrichten einer EF-Verbindung zu meinem Projekt, bekomme ich die NRE. Überprüfen der SQL, kann ich kopieren und fügen Sie das in ein SQL-Abfragefenster und erhalten Sie die richtigen Ergebnisse. Ich bekomme auch eine NRE ohne Where call.
Ich habe versucht, mein Modell aus der Datenbank zu aktualisieren, um alles zu aktualisieren. Ich habe versucht, die Ansicht vom Modell zu entfernen und zu aktualisieren. Ich habe versucht, das Modell vollständig zu löschen und neu zu erstellen. Ich habe Visual Studio UND meinen Computer neu gestartet. Ich bekomme die gleiche NRE für die Abfrage. Ich weiß nicht, was ich sonst noch versuchen kann, und diese NRE macht überhaupt keinen Sinn, wenn ich die Ergebnisse bekomme, die ich erwarte, wenn ich alles außer EF benutze. Ich würde es mit einem Fehler bei EF abgleichen, wenn ich es vorher nicht funktionierte.
Hat sich jemand damit beschäftigt? Eine Online-Suche nach dieser spezifischen Situation hat nichts bewirkt.
Stack Trace:
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()
Bitte haben Sie Verständnis für die Frage, bevor Sie sie als mögliches Duplikat markieren. – Pfhoenix
Bitte fügen Sie ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) bei. Bitte lesen Sie auch [Wie stelle ich eine gute Frage] (http://stackoverflow.com/help/how-to-ask). Da Ihre Frage derzeit geschrieben wird, ist das Duplikat für das, was ein NRE ist, die einzige und beste Lösung für Ihre Frage. Sie haben keine Stack-Trace angegeben, keine Angabe, was eigentlich Null ist (oder nicht: Beispiel ist "dbcontext" null? Ist "dbcontext.Tree" null? Ist das Ergebnis dbcontext.Tree.ToList() null oder werfen die NRE) oder irgendwelche anderen Besonderheiten. – Igor
Also haben alle Bäume in Ihren Daten Werte für 'Left' und' Right'? – trailmax