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

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

44 голосов
/ 23 января 2012

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

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

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

Можно ли установить большее время ожидания для отдельных страниц?

Ответы [ 5 ]

67 голосов
/ 23 января 2012

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

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

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

10 голосов
/ 15 июня 2016

@ Ответ Тома Галленса у меня не сработал на EF6

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

Ecom.Database.CommandTimeout = 120;

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

4 голосов
/ 04 февраля 2014

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

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

1 голос
/ 17 октября 2018

Вот последний синтаксис для .Net 4.5.

    MyDbContext context = new MyDbContext();
    context.Database.SetCommandTimeout(300);
0 голосов
/ 04 апреля 2016

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

Des Owen

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