Veo un comportamiento extraño en mi modelo de Entity Framework. Tengo una consulta que tiene el siguiente aspecto:Marco de entidad devuelve nulo para una fila si la primera columna en esa fila es nula
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();
La consulta devuelve todas las columnas en orden alfabético por el nombre de la columna. Resulta que esta columna es NULL para algunas filas en el conjunto de resultados. Cuando amplío la variable de filas en el depurador, veo que toda la fila es nula.
EDIT: Alguna aclaración.
Por "primera columna", me refiero a la primera columna de la primera fila, es decir, en "SELECCIONE A, B, C DE ...", quiero decir A. Simplemente sucede que la consulta que Entity Framework construye devuelve todas las columnas en el conjunto de resultados unidos en orden alfabético, y el primero alfabéticamente es anulable y es nulo para algunas filas.
La columna en cuestión no es una clave principal; si fuera una clave principal, no podría ser nula.
Cuando Entity Framework procesa las filas de los datos devueltos en objetos, busca el valor de la primera columna en cada fila. Si esa columna es nula, devuelve nulo para la fila, en lugar de un objeto con la propiedad correspondiente a esa columna establecida en nulo.
No creo que esto tenga nada que ver específicamente con una unión externa izquierda; simplemente sucede que mi consulta usa uno. No he hecho ninguna prueba para verificar esto, sin embargo, así que es solo una suposición.
¿Alguien ha visto esto antes? ¿Alguien tiene una solución para esto?
, Tony
¿Necesitas una combinación izquierda? –
¿En qué lugar se obtiene el error? –
¿Podría publicar la consulta SQL que el EF envía al DB? –