2016-10-26 3 views
0

Ich habe eine einfache Linq-Abfrage, die plötzlich ausfällt. Dies hat bis gestern funktioniert und ich konnte das Problem nicht feststellen.Einfache LINQ-Abfrage erhält NullReferenceException, obwohl SQL Server-Tabelle Daten

Die Abfrage einfach ist eine vollständige Ansicht von SQL Server bekommen gestern

using(JobEntities JE = new JobEntities()) 
{ 
    var BatchData = (from x in JE.vwBatchObjectActiveBatches select x).ToList(); 
} 

Ab dieser Zeile ein

Nullreferenceexception (Objektverweis nicht auf eine Instanz eines Objekts festgelegt)

bekommt

Mein Verdacht war, dass ein Benutzer in schlechte Daten, die Ursache für die Ansicht auf SQL Server fehlgeschlagen, aber ich habe SQL Server selbst und th überprüft Die Ansicht wird ordnungsgemäß ausgeführt und mit Daten gefüllt.

Diese Abfrage wurde in der Mitte einer größeren Funktion ausgeführt, die Daten von vielen Orten lädt, also habe ich einen Testfall erstellt, wo ich einfach das Hauptfenster geladen und diese Abfrage direkt im Code ausgeführt habe, um sicherzustellen, dass nichts anderes beeinflusst es, und die Abfrage schlägt immer noch fehl. Alle anderen Linq-Abfragen, die ich in diesem Projekt ausführe, funktionieren immer noch, nur dieser schlägt fehl. Die App befindet sich momentan noch nicht in Produktion und war mindestens einige Monate lang statisch.

Wenn ich auf die JE im Überwachungsfenster schaue, kann ich die vwBatchObjectActiveBatches sehen und sie listet 164 Datensätze im lokalen Bereich auf - dies entspricht den Ansichtsergebnissen auf SQL Server. Durch das Erweitern der Ergebnisansicht wird der Null-Fehler erneut angezeigt.

DebugInformation

Wie kann ich finden und beheben, was auch immer diese Abfrage fehlschlagen verursacht? Warum zeigt die Ergebnisansicht einen Fehler an, aber die lokale Zeile zeigt die Daten an, die ich abrufen möchte?

+0

Was ist der Typ von 'vwBatchObjectActiveBatches'? Siehe [Minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve). – Enfyve

+0

können Sie bitte die TargetSite-Nachricht posten? Scheint etwas mit deinem Entitätsschlüssel zu sein (einfache Schätzung) – pix

+0

'(aus x in JE.vwBatchObjectActiveBatches wähle x) .ToList()' === 'JE.vwBatchObjectActiveBatches.ToList()' minus ein paar Verrenkungen! – spender

Antwort

2

Es sieht so aus, als ob Ihre Datenbank NULL zurückgibt, wo Entity Framework dies nicht erwartet/erlaubt. Die zurückgegebenen Daten sollten der Definition ihrer Datamodel-Objekte entsprechen.

Lösung: entweder ‚fix‘ die Daten, oder die Abfrage beheben, die sie, oder ändern Sie die Definition Ihrer Datenmodell Objekte erzeugt NULL für das Spannungsfeld zu ermöglichen (s).