【问题标题】:how to increase command time for SQL command with datasets and tableAdapter c#如何使用数据集和 tableAdapter c# 增加 SQL 命令的命令时间
【发布时间】:2017-08-13 21:06:38
【问题描述】:

我正在尝试(以编程方式或不以编程方式)在指定数据集 (A) 中设置命令超时,现在我有我的 MVC 模型,我已经为不同的存储过程,我只需要为一个数据集延长这个时间(A ...再次-.-),此外我看到了不同的相关问题,但没有一个解决我的问题。我在下面向您展示我的代码:

 private static DAL.CopyCoinDataFromOracle.CoinDataTableAdapters.spCopyCoinDataTableAdapter cdOracle =
        new DAL.CopyCoinDataFromOracle.CoinDataTableAdapters.spCopyCoinDataTableAdapter();

public static bool CopyInformationFromOracle()
    {            
        bool? statusMethod = false;             
        cdOracle.CopyCoinDataFromOracle(ref statusMethod); //This is where I have the problem and the exception is thrown after 30 seconds are reached
        return Convert.ToBoolean(statusMethod);
    }

需要明确的是,“cdOracle”是我的表适配器,我的存储过程链接到“CopyCoinDataFromOracle”方法,该查询第一次需要执行 60seg,这就是为什么我想增加那个时间(通过默认为 30 段。),信息从与 oracle 的链接服务复制到 SQL Server 任何您可以提供的帮助将不胜感激。

提前致谢。

【问题讨论】:

  • 感谢@regeit,它对我帮助很大,虽然它有点令人困惑,比如正确的命名空间和代码的放置位置,但经过一段时间的阅读和试​​验,我终于做到了。

标签: c# sql-server dataset


【解决方案1】:

我终于解决了我的问题,感谢this related question in stackoverflow,链接由@regeit 提供,这是我的解决方案:

我使用以下方法创建这个类,如帖子所说(但没有详细解释在哪里!):

using System;
using System.Data.SqlClient;
using System.Reflection;

namespace DAL.CopyCoinDataFromOracle.CoinDataTableAdapters
{    
    partial class spCopyCoinDataTableAdapter : System.ComponentModel.Component
    {
        public spCopyCoinDataTableAdapter(int Timeout)
        {            
            SetCommandTimeout(Timeout);
        }

        public void SetCommandTimeout(int Timeout)
        {
            foreach (var item in SelectCommand())
            {
                item.CommandTimeout = Timeout;                
            }
        }

        private System.Data.SqlClient.SqlConnection GetConnection()
        {
             return GetProperty("Connection") as      
             System.Data.SqlClient.SqlConnection;
        }

        private SqlCommand[] SelectCommand()
        {
             return GetProperty("CommandCollection") as SqlCommand[];
        }

        private Object GetProperty(String s)
        {
             return this.GetType().GetProperty(s, BindingFlags.NonPublic | BindingFlags.GetProperty | BindingFlags.Instance).GetValue(this, null);
        }
    }
}

“DAL”是我的类库,“CopyCoinDataFromOracle”是包含我的数据集的文件夹,“CoinDataTableAdapter”是命名空间的名称,现在我将此代码放在名为“CopyCoinData.xsd”的tableadapter代码中(只是双击并擦除自动生成的代码来创建它)。

最后怎么用:

private static DAL.CopyCoinDataFromOracle.CoinDataTableAdapters.spCopyCoinDataTableAdapter cdOracle =
            new DAL.CopyCoinDataFromOracle.CoinDataTableAdapters.spCopyCoinDataTableAdapter(80); 

其中 80 表示将在对象的构造函数中设置的超时,请让我知道更多问题。

希望能提供帮助。

【讨论】:

    猜你喜欢
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 2016-09-01
    • 2010-09-11
    • 1970-01-01
    相关资源
    最近更新 更多