Должны ли хранимые процедуры вызываться в 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 не имеет значения.

Другие вопросы по тегам