如何使用数据集和表适配器 c# 增加 SQL 命令的命令时间



我正在尝试设置(以编程方式或非编程方式(指定数据集(A(中的命令超时,现在我有了我的MVC模型,我已经创建了几个数据集(A,B,C...N(对于不同的存储过程,我只需要延长一个数据集的时间(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 seg.(,信息从oracle的链接服务复制到SQL Server任何帮助将不胜感激。

提前谢谢。

我终于解决了我的问题,这要归功于 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"(只需双重并擦除自动生成的代码来创建这个(。

最后如何使用它:

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

其中 80 表示将在对象的构造函数中设置的超时,请告诉我以获取更多问题。

希望对您有所帮助。

最新更新