2013-08-06 5 views
0

Мне нужно установить CommandTimeout недвижимость для определенного SqlCommand. Предпосылка заключается в том, что основная строка подключения и SqlConnection не могут быть изменены. Мне нравится настраивать значение тайм-аута. Хотелось узнать, может ли его хорошая и справедливая практика определять его в app.config (это настольное приложение)?Определение SqlCommand.CommandTimeout из файла конфигурации

+0

Немного субъективного вопроса, но я не вижу проблемы с ним. –

+0

Но вы хотите изменить Timeout для каждого SqlCommand, используемого в вашем приложении, или только для одной команды? – Steve

+0

@KevinDiTraglia Вместо абсолютной проблемы для меня это просто загадка для меня, и я хотел бы знать, как наилучшим образом ее решить :) – rageit

ответ

3

app.config - это фантастическое место для такого типа условий. Возможно, что-то вроде этого:

<appSettings> 
    <add key="commandTimeout" value="2" /> 
</appSettings> 

0 0 Может быть, что-то вроде этого:

var timeout = cnn.ConnectionTimeout; 
var configTimeout = ConfigurationManager.AppSettings["commandTimeout"]; 
if (!string.IsNullOrEmpty(configTimeout)) 
{ 
    timeout = Convert.ToInt32(configTimeout); 
} 

Это, конечно, может существовать в статическом классе, как это может быть:

public static class AppSettings 
{ 
    private static int _commandTimeout = -1; 
    public static int CommandTimeout 
    { 
     get 
     { 
      if (_commandTimeout != -1) { return _commandTimeout; } 

      var configTimeout = ConfigurationManager.AppSettings["commandTimeout"]; 
      if (!string.IsNullOrEmpty(configTimeout)) 
      { 
       _commandTimeout = Convert.ToInt32(configTimeout); 
      } 
      else 
      { 
       _commandTimeout = 1; // this is the default if the setting doesn't exist 
      } 

      return _commandTimeout; 
     } 
    } 
} 

Тогда все, что вам придется сделать, это:

var timeout = AppSettings.CommandTimeout; 

или даже более кратко:

cmd.CommandTimeout = AppSettings.CommandTimeout; 
+0

По умолчанию тайм-аут для SqlCommand.CommandTimeout Свойство составляет 30 секунд :) – rageit

+0

@rageit, это правда, я просто бросал числа в свой пример. –

0

Вы c используйте свойство CommandTimeout и Time Paramater в файле конфигурации приложения.

connection = Factory.CreateConnection(); 
connection.ConnectionString = ConnectionString.ConnectionString; 
connection.Open(); 

this.cmd = connection.CreateCommand(); 
cmd.CommandTimeout = ConfigurationManager.AppSettings["TimeConfigParam"]; 
Смежные вопросы