Хранимые процедуры запускаются и забываются с Entity Framework - PullRequest
1 голос
/ 14 июля 2011

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

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

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

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

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

Привет

1 Ответ

1 голос
/ 15 июля 2011

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

...