Хранимые процедуры запускаются и забываются с Entity Framework

Я использую Entity Framework 4.1 в приложении. Одним из требований является выполнение некоторых хранимых процедур в базе данных, из которых некоторые занимают довольно много времени. Кроме того, эти хранимые процедуры не возвращают никаких результатов, поэтому мне нужно только запустить их и забыть о них.

Естественно, .NET будет ожидать завершения этих операций, поэтому через некоторое время он выдаст исключение, что "истекло время ожидания".

Я знаю, что мог бы это исправить, установив для свойства CommandTimeout более высокое значение, однако я ищу альтернативное решение (если такое вообще существует).

Можно ли выполнять хранимые процедуры, используя Entity Framework как Fire-and-Forget?

Любая помощь будет оценена.

С уважением

1 ответ

Решение

Хранимые процедуры не поддерживают запуск и забывают выполнение. Вы можете использовать обычный ADO.NET и выполнять запрос асинхронно на отдельном соединении (с помощью BeginExecuteNonQuery). EF не поддерживает асинхронное выполнение. Еще один более сложный способ, который ведет себя как пожар и забыл, - это создание задания SQL с одношаговым выполнением вашей хранимой процедуры. Вместо вызова вашей хранимой процедуры вы будете вызывать sp_start_job который возвращается сразу после запуска задания, и задание будет выполняться асинхронно, без возврата каких-либо других результатов обратно в ваше приложение.

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