2016-01-19 2 views
0

У меня есть следующий запрос, который после выполнения устанавливает переменную 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 
        }; 
+2

Прежде всего: вы вызываете FirstOrDefault()? если это так ... то мы можем обсудить дальше, иначе, если вы вернете коллекцию (вы вызываете ToList()), вы НИКОГДА не имеете нулевой ссылки, в худшем случае у вас будет пустая коллекция. Так в чем дело? –

+2

Почему так много объединений? Как правило, с хорошо спроектированным EF-контекстом вы должны использовать ассоциацию вместо соединения. – Aron

ответ

0

Извините, один стол был пуст. Это была одна из проблем. Большое спасибо.

Смежные вопросы