У моей команды истекает время ожидания, поэтому мне нужно изменить значение времени ожидания команды по умолчанию.
Я нашел myDb.Database.Connection.ConnectionTimeout
, но это так readonly
.
Как я могу установить время ожидания команды в Entity Framework 5 ?
Database.CommandTimeout
больше не только для чтенияDatabase.Connection.ConnectionTimeout
. В любом случае, я бы сказал, чтоDatabase.CommandTimeout
это правильно в случае, если ваш запрос истекает (исключениеSystem.Data.Entity.Core.EntityCommandExecutionException
содержитSystem.Data.SqlClient.SqlException: Timeout expired.
).Ответы:
Попробуйте это в вашем контексте:
Если вы хотите определить время ожидания в строке подключения, используйте
Connection Timeout
параметр, как в следующей строке подключения:Источник: Как: определить строку подключения
источник
ObjectContext
этому конструктору, иногда команды консоли PowerShell / NuGet будут сбои по кругу .Ты можешь использовать
DbContext.Database.CommandTimeout = 180;
Это довольно просто и не требуется приведение.
источник
Fluent API
форму EF.Мой частичный контекст выглядит так:
Я оставил
SetCommandTimeOut
общедоступным, поэтому я изменяю только те процедуры, которые мне нужны (более 5 минут) вместо глобального таймаута.источник
В сгенерированном коде конструктора он должен вызвать
OnContextCreated()
Я добавил этот частичный класс для решения проблемы:
источник
Я расширил ответ Ронни беглой реализацией, чтобы вы могли использовать его так:
dm.Context.SetCommandTimeout(120).Database.SqlQuery...
источник
Для базы данных сначала Aproach:
Мы все еще можем установить его в конструкторе, переопределив шаблон T4 ContextName.Context.tt следующим образом:
Database.CommandTimeout = 180;
это резкое изменение.Сгенерированный вывод:
Если вы измените модель базы данных, этот шаблон останется, но сам класс будет обновлен.
источник
System.Configuration.ConfigurationManager.AppSettings["keyname"]
жесткого кода 180, вы можете использовать @shasТо же, что и другие ответы, но как метод расширения:
источник
Я просто столкнулся с этой проблемой и решил ее, обновив файл конфигурации своего приложения. Для рассматриваемого соединения укажите «Connection Timeout = 60» (я использую Entity Framework версии 5.0.0.0)
Настройка ConnectionTimeout
источник
Вы можете использовать это просто:
dbContext.Database.SetCommandTimeout(300);
источник