Время ожидания Linq-to-SQL
На одной из моих страниц я получил сообщение об ошибке, что время ожидания запроса linq истекло, так как он занимает слишком много времени. Это делает страницу непригодной для использования.
Это страница отчетов, доступ к которой администраторы получают примерно раз в день. Это неизбежно, чтобы сократить этот запрос вообще, он просто должен отсортировать много данных.
Решения для исправления этого я прочитал, увеличив свойство timeout в контексте данных, но я хотел бы избежать этого, так как это изменило бы его для весь сайт.
Есть ли способ установить больший тайм-аут для отдельных страниц?
4 ответов:
Только что нашел ответ, играя с intellisense:
using (MainContext db = new MainContext()) { db.CommandTimeout = 3 * 60; // 3 Mins }Таким образом можно увеличить время ожидания для запроса на основе каждого запроса, как предполагается, изменяя строки подключения или контексты данных.
@тома оврагов ответ не работает для меня на
EF6Мне пришлось детализировать базу данных на
DbContextНадеюсь, это сэкономит вам немного времени.
Ecom.Database.CommandTimeout = 120;
Ответ Тома Гуллена-хороший.
Другой респондент упомянул установку таймаута соединения в строке соединения.
Я хотел бы предупредить,что свойство Connection timeout строки подключения не является таймаутом команды. Это становится более очевидным, когда вы думаете об этом. Это распространенная ошибка.
Перед увеличением времени ожидания SQL всегда стоит оценить стратегию индексирования. По моему опыту, запрос к хорошо индексированной таблице и столбцам редко приводит к таймауту.
Дес Оуэн
Comments