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

Как установить время ожидания команд в Linqpad?

Недавно я начал использовать LinqPad и купил опцию Autocomplete и очень люблю ее. Это отличный продукт!

Я хотел спросить, есть ли способ контролировать тайм-аут команды, который используется при запросе базы данных SQL Server в LinqPAD (я использую операторы С#)? Я не вижу, где у нас есть доступ к реальной строке соединения, и у меня есть несколько больших запросов для отчетов, которые выходят из строя. Похоже, что тайм-аут жестко закодирован через 30 секунд.

Заранее благодарим за помощь!

4b9b3361

Ответ 1

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


Вся работа, которую вы выполняете внутри UserQuery. CommandTimeout является свойством этого.

this.CommandTimeout = 60;

Посмотрите на все свойства в this. Это дает вам хорошее представление о некоторых вещах, которые вы можете сделать.

Ответ 2

Как указано в ответе @DaveShaw при запросе базы данных SQL Server в LinqPAD с использованием "обычного" соединения, вы можете использовать:

this.CommandTimeout = 60

Однако это свойство недоступно, если LinqPad подключается к БД с использованием EF-библиотеки. Использование this.CommandTimeout приводит к:

"UserQuery" не содержит определения для "CommandTimeout", и не может быть найден метод расширения "CommandTimeout", принимающий первый аргумент типа "UserQuery" (нажмите F4, чтобы добавить ссылку на директиву или сборку)

Некоторое озадачивание и этот ответ о тайм-аутах EF в целом заставило меня использовать это на EF-соединении:

(this as IObjectContextAdapter).ObjectContext.CommandTimeout = 60;