Как установить время ожидания команд в Linqpad?
Недавно я начал использовать LinqPad и купил опцию Autocomplete и очень люблю ее. Это отличный продукт!
Я хотел спросить, есть ли способ контролировать тайм-аут команды, который используется при запросе базы данных SQL Server в LinqPAD (я использую операторы С#)? Я не вижу, где у нас есть доступ к реальной строке соединения, и у меня есть несколько больших запросов для отчетов, которые выходят из строя. Похоже, что тайм-аут жестко закодирован через 30 секунд.
Заранее благодарим за помощь!
Ответы
Ответ 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;