Должны ли хранимые процедуры вызываться в OnInit, OnLoad или OnPreRender?
У меня типичный RadAjaxLoadingPanel
который срабатывает, когда метод нажатия кнопки вызывает Response.Redirect
, Страница перенаправления имеет несколько дорогих хранимых процедур в OnLoad
метод. Кажется, это блокирует пользовательский интерфейс, и круг замирает, пока эти хранимые процедуры не завершатся. Если эти хранимые процедуры остаются в OnLoad
метод? Есть ли лучшая реализация при загрузке Response.Redirect
что предотвращает блокировку пользовательского интерфейса?
protected void Button_Click(object sender, EventArgs e)
{
Response.Redirect("~/page.aspx", false);
}
1 ответ
Сделай это. Запустите хранимую процедуру через Management Studio или любую другую дизайнерскую программу, которую вы используете для подключения к вашей базе данных. Как долго длится эта операция?
Теперь перейдите к настройке вашей программы в фоновом процессе, чтобы позаботиться о работе хранимой процедуры, но в вашей функции, которая вызывает хранимую процедуру, убедитесь, что есть обратная строка:
return [something];
Может быть, вы хотите, чтобы функция или метод возвращали список или значение? Вы должны вернуть что-то обратно в представление во время выполнения хранимой процедуры, чтобы ваш процесс не задерживался.
Сравните время выполнения операции в вашей программе с временем, указанным в вашей базе данных. Мне кажется, что независимо от того, сколько времени займет хранимая процедура, если она требуется в представлении, инициализация в OnInit, OnLoad или OnPreRender не имеет значения.