【问题标题】:How can we set the CommandTimeout as a property in our class and when set it will take effect all in DAL我们如何将 CommandTimeout 设置为我们类中的属性,并且在设置时它将在 DAL 中全部生效
【发布时间】:2014-08-27 07:27:37
【问题描述】:

我们如何将CommandTimeout设置为我们类中的一个属性,设置后它将在DAL中全部生效

using (SqlCommand command = conn.CreateCommand())
{
  command.CommandTimeout = 60; //I need to make this globally. so all my timeout will have a 60 second
}

我也这样做了,但没有运气

public class Test : IDbCommand
{
    public void DoSomething()
    {
        CommandTimeout = 10;

    using (var sqlcon = new SqlConnection("Server=Server2;Database=;Trusted_Connection=true"))
    {
        using (var sqlcom =  sqlcon.CreateCommand())
        {

        }
    }
}
int _cto;
public int CommandTimeout
{
    get
    {
        return _cto;
    }
    set
    {
        _cto = value;
    }
}

【问题讨论】:

    标签: c# asp.net .net sqlcommand


    【解决方案1】:

    您可以创建一个返回 SqlCommand 对象的方法,并且可以在每个方法中使用它,因此每个命令的超时时间为 60;

    public SqlCommand GetCommandObj()
    {
            SqlCommand cmd=new SqlCommand();
            cmd.CommandTimeout=60;
            cmd.CommandText="your query here";
            return cmd;
    }
    

    您还可以为命令对象设置其他属性;

    【讨论】:

      【解决方案2】:

      我认为最简单的解决方案是创建一个类,例如CommandFactory 只负责创建命令,并将在整个应用程序中全局使用。这当然需要对您的源代码进行一些重构,但这似乎并不复杂。 CommandFactory 应该根据一些规则创建命令对象。在您的情况下,它将 CommandTimeout 属性设置为 60,但它也可以设置其他属性。 timeout 的值可以硬编码,但更好的方法是从配置中读取它。这是一个非常基本的例子:

      public static class CommandFactory
      {
          public static DbCommand CreateCommnad(DbConnection connection)
          {
              var cmd = connection.CreateCommand();
              cmd.CommandTimeout = ReadTimeoutFromConfig();
              //Set other properites to default values
              return cmd;
          }
      }
      
      
      ...
      using (var connection = new SqlConnection("Server=Server2;Database=;Trusted_Connection=true"))
      {
          using (var command = CommandFactory.CreateCommnad(connection))
          {
              command.CommandText = "...";
              //Execute a command, read results etc.
          }
      }
      ...
      

      【讨论】:

        猜你喜欢
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多