Я использую Entity Frameowrk 7 и имею следующий запрос LINQ для выбора данных в объект передачи данных (DTO). Чтобы выбрать данные из свойств навигации, я использую Include
, чтобы активировать загрузку указанных свойств. В таблице в настоящее время имеет два ряда, но только один из них возвращается в ответ на следующий запрос:LINQ Select пропускает строку, если свойство навигации имеет значение null
var jobs = context.CorepJobs
.Include(j => j.CompanyNavigation)
.Include(j => j.WellNavigation.FieldNavigation)
.Select(j =>
new CorepJobDTO()
{
Id = j.Id,
Created = j.Created,
DepthAsFeet = j.DepthAsFeet,
JobType = j.JobType,
State = j.State,
ProjectNo = j.ProjectNo,
CompanyName = j.CompanyNavigation.CompanyName,
WellName = j.WellNavigation.Name,
FieldName = j.WellNavigation.FieldNavigation.Name
}
).AsEnumerable();
Если некоторые свойства null
, я бы ожидать, что запрос для заполнения соответствующих свойств DTO с null
. Вместо этого происходит то, что если свойство FieldNavigation
равно null
, вся строка пропускается и возвращается только одна из двух строк. Если я оставлю последнее свойство (FieldName
) в блоке Select
, возвращаются обе строки.
Я также попытался
FieldName = j.WellNavigation.FieldNavigation != null =? j.WellNavigation.FieldNavigation.Name : ""
без удачи.
Любые идеи, что я могу делать неправильно?
https://github.com/aspnet/EntityFramework/issues/3186 –
Приятная находка! Это должно быть так. –