EntitySet по сравнению с производительностью запросов Таблицы в LINQ2SQL

Это требует предварительной агрегации и агрегирования строк.

with t as (
      select id, question, count(*) as cnt
      from t
      group by id
     )
select i.id,
       stuff( (select ', ' + convert(varchar(255), cnt) + ' ' + question
               from t t2
               where t2.id = i.id
               for xml path ('')
              ), 1, 2, ''
            ) as result
from (select distinct id from t) i;
9
задан thatismatt 22 March 2013 в 21:24
поделиться

3 ответа

Таблицы являются эффективно концептуальным вопросом - они действительно существуют на сервере, таким образом, необходимо запросить для получения записей. Записи внешнего ключа - те на самом деле выбранные другим запросом, таким образом, в той точке они локально доступны. Это - довольно неясное описание, но надо надеяться оно преобладает над общим понятием.

1
ответ дан 5 December 2019 в 01:19
поделиться

Это было обращено на форумах MSDN. Суть обоснования - то, что очень трудно отследить добавленные и удаленные объекты при создании запросов против базы данных. Вместо этого EntitySet является чем-то вроде локальной копии связанных объектов, которыми можно управлять. К сожалению, как Вы заметили, это имеет побочный эффект передачи выражений в LINQ к вызовам Объектов вместо лучшего выполнения LINQ к SQL.

0
ответ дан 5 December 2019 в 01:19
поделиться
ctx.Matches.Where(x => x.MatchID == 1).Single()

Единственный () возвращает Соответствие, не IQueryable (Соответствие).

Просто продвиньте Единственный () прочь к последнему шагу:

ctx.Matches
  .Where(m => m.MatchID == 1)
  .Select(m => m.MatchPlayers.Max(mp => mp.Score))
  .Single();

То, что показывает этот запрос, что нормально использовать свойство MatchPlayers в запросе. Который обращается к моей интерпретации вопроса автора вопроса - "Почему я не могу использовать EntitySet в запросе?", Вы можете.

3
ответ дан 5 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: