adapter.Fill需要很长时间才能运行

时间:2017-05-04 04:32:54

标签: c# sql-server-2008 ado.net

我有一个ADO.NET代码,用输入参数进行服务器调用并返回Dataset。我正在使用SqlDataAdapter获取数据并为其分配数据集。 这是我的代码

    public DataSet GetRecordsWithParam(string spName, Dictionary<string, dynamic> ParaArr)
    {
        try
        {
            Connection();
            DataSet ds = new DataSet();
            cmd = new SqlCommand(spName, con);
            cmd.CommandTimeout = 300;
            cmd.CommandType = CommandType.StoredProcedure;
            if ((ParaArr != null))
            {
                foreach (KeyValuePair<string, dynamic> kvp in ParaArr)
                {
                    cmd.Parameters.Add(kvp.Key, kvp.Value);
                }
            }
            if (con.State == ConnectionState.Open)
            {
                con.Close();
            }
            con.Open();
            SqlDataAdapter myAdapter = new SqlDataAdapter(cmd);
            myAdapter.Fill(ds);              
            return ds;
        }
        catch
        {
            throw;
        }
        finally
        {
            con.Close();
        }
    }

但执行该行需要花费太多时间

 myAdapter.Fill(ds);  

我的手术没有问题。使用Fill将myAdapter中的数据分配给ds时需要花费太多时间。这是我在我的项目中使用的全局方法,大多数时候它工作正常。但只有从这种方法调用

 private DataSet PayPeriodFromCountryCompany(string Country, string Company, string EmployeeType, string startDate, string EndDate, string Action)
{
    Dictionary<string, object> Dic = new Dictionary<string, object>();
    DBConnection DB = new DBConnection();
    DataSet _dsPayPeriod = new DataSet();
    string _strConnectionString = ConfigurationManager.ConnectionStrings["TimesheetconnString"].ConnectionString;

    try
    {
        Dic.Add("@Country", Country);
        Dic.Add("@Company", Company);
        Dic.Add("@EmployeeType", EmployeeType);
        Dic.Add("@StartDate", startDate);
        Dic.Add("@EndDate", EndDate);
        Dic.Add("@Action", Action);
        _dsPayPeriod = DB.GetRecordsWithParam("TSTime_spTimesheetToCPS", Dic);

        return _dsPayPeriod;
    }
    catch
    {
        throw;
    }

}

加载问题。执行该线路需要1-2分钟。 myAdapter.Fill(DS); &#39;

如果代码中有任何错误,任何人都会指出。在此先感谢

0 个答案:

没有答案