При работе с большими структурами данных первый вопрос, который следует рассмотреть, - это "мне нужны все эти данные?" Например, можете ли вы использовать Select
для извлечения только деталей из соответствующих таблиц и позволить EF построить более подходящий запрос, а не пытаться извлечь все столбцы из всех связанных таблиц?
Как долго длился этот запрос принять для запуска в EF Core 2.2?
Я бы посоветовал взглянуть на связанные таблицы, чтобы увидеть, какие таблицы могут содержать много столбцов или какие-либо особенно большие столбцы. (MEMO, VARCHAR (Макс.), Что-то в этом роде) Если вы выборочно исключаете таблицы, есть ли подозрение, которое приводит к большой задержке?
Например, если вы исключили .Include(x => x.pcf)
и все загружается без таймаута. Вы можете извлечь файл PCF перед его использованием, введя:
_context.Entry(z).Reference(x => x.pcf).Load();
Хотя, если этот запрос должен вернуть данные в представление et c. Я настоятельно рекомендую создать структуру модели представления на основе того, что необходимо для представления, и использовать Select
для его заполнения, а не загружать весь граф сущностей. Если вместо этого вы хотите загрузить сущность для применения обновлений, я бы предпочел загружать только наиболее часто обновляемые таблицы и позволять EF лениво загружать остальные, если это необходимо, или использовать метод Load
для выборки. если нужно.