У меня есть следующий запрос, который после выполнения устанавливает переменную arts в null.LINQ to Entities возвращает null, но сгенерированный SQL работает отлично
В SQL Server Profiler я вижу, что запрос хорошо сформирован, выполняется и возвращает строки (есть только одно замечание: запрос включает все столбцы всех задействованных таблиц).
Почему коллекция результатов установлена равной нулю, даже когда SQL-запрос работает? И почему SQL-запрос включает в себя все столбцы, а не только те, которые указаны в анонимном типе?
Большое спасибо.
Циферблат.
var arts = from rp in ent.ReportesDePrecios
join arp in ent.ArtículosDeReporteDePrecios on rp.Id equals arp.ReporteDePreciosId
//join crp in ent.CategoríasDeReporteDePrecios on rp.Id equals crp.ReporteDePreciosId
join a in ent.Artículos on arp.ArtículoId equals a.Id
where a.CategoríaId != null
join p in ent.Precios on new { Precio = a.Id, rp.ListaDePreciosId } equals new { Precio = p.ArtículoId, p.ListaDePreciosId }
where p.Activo == true
select new
{
CategoríaId = a.CategoríaId.Value,
a.FabricanteId,
ArtículoId = a.Id,
a.Código,
Precio = p.Valor
};
Прежде всего: вы вызываете FirstOrDefault()? если это так ... то мы можем обсудить дальше, иначе, если вы вернете коллекцию (вы вызываете ToList()), вы НИКОГДА не имеете нулевой ссылки, в худшем случае у вас будет пустая коллекция. Так в чем дело? –
Почему так много объединений? Как правило, с хорошо спроектированным EF-контекстом вы должны использовать ассоциацию вместо соединения. – Aron