Подтвердить что ты не робот

Тайм-аут Linq-to-SQL

Я получаю сообщение об ошибке на одной из моих страниц, что запрос linq затухал, поскольку он занимает слишком много времени. Это делает страницу непригодной.

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

Решения для исправления, которые я прочитал, - это увеличение ресурса тайм-аута в контексте данных, но я бы хотел избежать этого, так как это изменило бы его для всего веб-сайта.

Есть ли способ установить более длительный тайм-аут для отдельных страниц?

4b9b3361

Ответ 1

Только что нашел ответ, играющий с intellisense:

using (MainContext db = new MainContext())
{
    db.CommandTimeout = 3 * 60; // 3 Mins
}

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

Ответ 2

Ответ @Tom Gullens не работал у меня на EF6

Мне пришлось переходить к базе данных на DbContext

Ecom.Database.CommandTimeout = 120;

Надеюсь, это сэкономит вам некоторое время.

Ответ 3

Ответ Тома Гуллена - хороший.

Другой респондент упомянул о настройке таймаута соединения в строке подключения.
Я хотел бы предупредить, что свойство тайм-аута соединения строки соединения НЕ является таймаутом команды. Это более очевидно, когда вы об этом думаете. Это распространенная ошибка.

Ответ 4

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

Де Оуэн