Настройка CommandTimeout в Dapper.NET? - PullRequest
70 голосов
/ 10 января 2012

Я пытаюсь выполнить резервное копирование SQL через хранимую процедуру через Dapper (остальная часть моего приложения использует Dapper, поэтому я бы предпочел, чтобы эта часть также проходила через него). Он работает просто отлично, пока не сработает CommandTimeout.

using (var c = SqlConnection(connstring))
{
    c.Open();
    var p = new DynamicParameters();
    // fill out p

    c.Execute("xp_backup_database", p, commandType: CommandType.StoredProcedure);
}

Единственный известный мне параметр CommandTimeout находится в SqlCommand. Есть ли способ установить это через Dapper?

Ответы [ 2 ]

83 голосов
/ 10 января 2012

Да, существует несколько версий функции Execute. Один (или несколько) из них содержит параметры commandTimeout:

public static int Execute(this IDbConnection cnn, string sql, 
                dynamic param = null, IDbTransaction transaction = null, 
                            int? commandTimeout = null, CommandType? commandType = null)

Взято из SqlMapper.cs

48 голосов
/ 13 августа 2015

Пример из исходного вопроса с добавленным принятым ответом, на случай, если кто-то захочет. (Тайм-аут установлен на 60 секунд):

using (var c = SqlConnection(connstring))
{
    c.Open();
    var p = new DynamicParameters();
    // fill out p

    c.Execute("xp_backup_database", p, commandTimeout: 60, 
                                       commandType: CommandType.StoredProcedure);
}
...