Почему использование AsQueryable () вместо Списка ()?

os.stat действительно включает время создания. Нет только никакого определения st_anything для элемента os.stat(), который содержит время.

Так пробуют это:

os.stat('feedparser.py')[8]

Сравнивают это с Вашим создавать дату на файле в ls-lah

, Они должны быть тем же.

55
задан Peter Mortensen 14 June 2016 в 16:01
поделиться

3 ответа

AsQueryable просто создает запрос, инструкции, необходимые для получения списка. Позже вы можете внести дальнейшие изменения в запрос, например, добавить новые предложения Where, которые будут отправлены полностью вниз на уровень базы данных.

AsList возвращает фактический список со всеми элементами в памяти. Если вы добавите к нему новый ключ Where, вы не получите быстрой фильтрации, которую предоставляет база данных. Вместо этого вы получаете всю информацию в списке, а затем отфильтровываете то, что вам не нужно в приложении.

Таким образом, в основном все сводится к ожиданию последнего возможного мамы, прежде чем брать на себя обязательства.

88
ответ дан 7 November 2019 в 07:11
поделиться

Возврат IQueryable имеет то преимущество, что выполнение будет отложено до тех пор, пока вы действительно начните перечисление результатов, и вы можете составить запрос с другими запросами и по-прежнему получить выполнение на стороне сервера.

Проблема в том, что вы не можете контролировать время жизни контекста базы данных в этом методе - вам нужен открытый контекст и вы должны убедиться, что он остается открытым до тех пор, пока запрос не будет выполнен. И затем вы должны убедиться, что контекст будет удален. Если вы вернете результат как List , T [] или что-то подобное, вы теряете отложенное выполнение и выполнение составных запросов на стороне сервера, но получаете контроль над временем существования контекста базы данных.

Что лучше всего подходит, конечно, зависит от реальных требований. Другой вопрос без единой правды.

23
ответ дан 7 November 2019 в 07:11
поделиться

Возвращение IQueryable отложит выполнение запроса до фактического использования его результатов. До этого момента вы также можете выполнять дополнительные операции запросов к базе данных на IQueryable ; в списке вы ограничены обычно менее эффективными операциями в памяти.

4
ответ дан 7 November 2019 в 07:11
поделиться
Другие вопросы по тегам:

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