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

Установка таймаута команды в инфраструктуре сущности 4.3

Я не могу найти способ установить тайм-аут команды запроса linq с использованием фреймворка сущностей 4.3 и его "DbContext". Как увеличить значение Commandtimeout в структуре сущностей?

ИЗМЕНИТЬ Я действительно искал увеличение тайм-аута команды. Я смутил их, это команда sql, которая не синхронизирует соединение.

Спасибо

4b9b3361

Ответ 1

Если вы используете DbContext, вам сначала нужно опуститься до ObjectContext:

((IObjectContextAdapter)context).ObjectContext.CommandTimeout = 180;

Ответ 2

Я добавил значение таймаута команды в свой класс 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();
        }

Ответ 3

этой команды достаточно.

((System.Data.Entity.Infrastructure.IObjectContextAdapter) context).ObjectContext.CommandTimeout
                = 180;

Ответ 4

У меня была проблема с установкой 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 начинают работать :)