Платформа сущностей возвращает нуль для строки, если первый столбец в этой строке равен нулю

Я вижу странное поведение в моей модели Entity Framework. Я получил запрос, который выглядит следующим образом:

<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>

Запрос возвращает все столбцы в алфавитном порядке по имени столбца. Оказывается, этот столбец равен NULL для нескольких строк в наборе результатов. Когда я раскрываю переменную rows в отладчике, я вижу, что вся строка пуста!

РЕДАКТИРОВАТЬ: некоторые уточнения.

Под «первым столбцом» я имею в виду первый столбец первой строки, то есть в «SELECT A, B, C FROM ...», я имею в виду A. Просто случается, что запрос, который создает Entity Framework, возвращает все столбцы в объединенном результирующем наборе в алфавитном порядке, а первый в алфавитном порядке обнуляется и для некоторых строк является нулевым.

Рассматриваемый столбец не является первичным ключом; если бы это был первичный ключ, он не мог бы быть нулевым.

Когда Entity Framework обрабатывает строки возвращенных данных в объекты, он смотрит на значение первого столбца в каждой строке. Если этот столбец имеет значение NULL, он возвращает значение NULL для строки вместо объекта со свойством, которое соответствует этому столбцу со значением NULL.

Я не верю, что это как-то связано с левым внешним соединением; бывает так, что мой запрос использует один. Однако я не проводил никаких проверок, чтобы проверить это, так что это всего лишь предположение.

Кто-нибудь видел это раньше? У кого-нибудь есть решение для этого?

Тони

Ответы на вопрос(2)

Ваш ответ на вопрос