Ответ 1
Если вы используете DbContext, вам сначала нужно опуститься до ObjectContext:
((IObjectContextAdapter)context).ObjectContext.CommandTimeout = 180;
Я не могу найти способ установить тайм-аут команды запроса linq с использованием фреймворка сущностей 4.3 и его "DbContext". Как увеличить значение Commandtimeout в структуре сущностей?
ИЗМЕНИТЬ Я действительно искал увеличение тайм-аута команды. Я смутил их, это команда sql, которая не синхронизирует соединение.
Спасибо
Если вы используете DbContext, вам сначала нужно опуститься до ObjectContext:
((IObjectContextAdapter)context).ObjectContext.CommandTimeout = 180;
Я добавил значение таймаута команды в свой класс Context, пытаясь обработать более длительные времена обработки для некоторых хранимых процедур, которые заполняют мое приложение. Кажется, сделал трюк.
public partial class ExampleEntities : DbContext
{
public ExampleEntities()
: base("name=ExampleEntities")
{
((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 180;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
этой команды достаточно.
((System.Data.Entity.Infrastructure.IObjectContextAdapter) context).ObjectContext.CommandTimeout
= 180;
У меня была проблема с установкой CommandTimeout при использовании await, например так:
await _dbContext.Database.Connection.QueryAsync("Update....")
,
затем я обнаружил в документации https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.commandtimeout?view=netframework-4.8, что:
Свойство CommandTimeout будет игнорироваться во время асинхронных вызовов методов, таких как BeginExecuteReader.
Я изменился на:
_dataWarehouseDbContext.Database.Connection.Query("Update...")
и CommandTimeout начинают работать :)