Das Entitäts-Framework gibt für eine Zeile null zurück, wenn die erste Spalte in dieser Zeile null ist

Ich sehe ein seltsames Verhalten in meinem Entity Framework-Modell. Ich habe eine Abfrage, die so aussieht:

<code>var rows = ( from alarm in context.Alarms
             join temp  in context.ListDetails on alarm.ListDetailId equals  temp.ListDetailId into entries from entry in entries.DefaultIfEmpty()
             join read  in context.Reads       on alarm.ReadId       equals  read.ReadId
             join plate in context.Images      on alarm.ReadId       equals plate.ReadId
             where alarm.IActive == 1 && ! alarm.TransmittedAlarm 
             where  read.IActive == 1 
             where plate.IActive == 1 && plate.ImageTypeId == 2
             select new { alarm, entry, read, plate } ).ToArray();
</code>

Die Abfrage gibt alle Spalten in alphabetischer Reihenfolge nach Spaltennamen zurück. Es stellt sich heraus, dass diese Spalte für einige Zeilen in der Ergebnismenge NULL ist. Wenn ich die Zeilenvariable im Debugger erweitere, sehe ich, dass die gesamte Zeile null ist!

EDIT: Einige Klarstellungen.

Mit "erste Spalte" meine ich die erste Spalte der ersten Zeile, dh mit "SELECT A, B, C FROM ..." meine ich A. Es kommt nur vor, dass die Abfrage, die Entity Framework erstellt, alle zurückgibt Spalten in der verknüpften Ergebnismenge in alphabetischer Reihenfolge, und die erste Spalte ist alphabetisch nullfähig und für einige Zeilen null.

Die betreffende Spalte ist kein Primärschlüssel. Wenn es ein Primärschlüssel wäre, könnte er nicht null sein.

Wenn Entity Framework die Zeilen der zurückgegebenen Daten in Objekte verarbeitet, wird der Wert der ersten Spalte in jeder Zeile überprüft. Wenn diese Spalte null ist, wird null für die Zeile zurückgegeben, anstatt eines Objekts mit der Eigenschaft, die dieser Spalte entspricht, die auf null festgelegt ist.

Ich glaube nicht, dass dies speziell mit einer linken äußeren Verknüpfung zu tun hat. es kommt nur vor, dass meine Abfrage eine verwendet. Ich habe jedoch keine Tests durchgeführt, um dies zu überprüfen, es ist also nur eine Vermutung.

Hat das schon mal jemand gesehen? Hat jemand eine Lösung dafür?

Tony

Antworten auf die Frage(2)

Ihre Antwort auf die Frage