Метод заполнения адаптера данных работает медленно.
Я поддерживаю приложение, которое находится в старой 3-х уровневой арке.
Создайте общий метод, который выполняет процедуру хранения, возвращает набор данных и связывает gridview
public DataSet Execute_StoreProc_DataSet(string psStoreProcName) { DataSet dsResult= new DataSet(); UtilParams objParams; SqlConnection objConnection=null; SqlParameter objSqlParams=null; SqlCommand objCommand=null; SqlDataAdapter objSqlDataAdapter=null; try { objConnection=getConnection(); objCommand= new SqlCommand(psStoreProcName,objConnection); objCommand.CommandType=CommandType.StoredProcedure; objCommand.CommandTimeout = 0; IDictionaryEnumerator en = mhtParamCollection.GetEnumerator(); while (en.MoveNext()) { objParams=(UtilParams)en.Value; objSqlParams = new SqlParameter(); objSqlParams.ParameterName=objParams.ParamName; objSqlParams.SqlDbType =(SqlDbType)objParams.ParamType; objSqlParams.Direction=objParams.Direction; if (objParams.Direction==ParameterDirection.Output) { objSqlParams.Size=objParams.ParamSize; } objSqlParams.Value= objParams.ParamValue; objCommand.Parameters.Add(objSqlParams); } objSqlDataAdapter= new SqlDataAdapter(objCommand); objSqlDataAdapter.Fill(dsResult); return dsResult; } catch(Exception Ex) { //ErrorHandler objERR = new ErrorHandler(); //objERR.WriteError(DateTime.UtcNow + ", DAL.DBUtility-Execute_StoreProc_DataSet(): " + Ex.Message.ToString() + " " + Environment.UserName, Environment.UserName); throw; } finally { objCommand.Dispose(); objSqlDataAdapter.Dispose(); if (objConnection.State ==ConnectionState.Open) objConnection.Close(); } }
Сначала я подумал, что магазин Proc работает медленно. Если я выполняю с заднего конца
отображение результата в SSMS занимает 10 секунд.
Но то же самое в режиме отладки занимает слишком много времени, следовательно, связывает данные слишком поздно (более 4-5 минут).
Поможет ли программа чтения данных?
Что я уже пробовал:
Я создал индекс на таблице. Но в конце пользовательского интерфейса я не знаю , что можно было бы обойти