我有一个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;
如果代码中有任何错误,任何人都会指出。在此先感谢