1

我在應用程序中使用Entity Framework 4.1。其中一個要求是在數據庫上執行一些存儲過程,其中一些需要相當長的一段時間。此外,這些存儲過程不會返回任何結果,因此我只需要啓動它們並忘記它們。存儲過程使用Entity Framework激發並遺忘

自然,.NET將等待這些操作完成,因此一段時間後它會拋出「超時期限已過期」的異常。

我知道我可以通過將CommandTimeout屬性設置爲更高的值來解決此問題,但是我正在尋找替代解決方案(如果存在這種情況)。

是否可以使用實體框架作爲Fire-and-Forget執行存儲過程?

任何幫助將不勝感激。

Regards

回答

1

存儲過程不支持火災而忘記執行。您可以使用普通的ADO.NET並在單獨的連接上異步執行查詢(使用BeginExecuteNonQuery)。 EF不支持異步執行。另一個更復雜的行爲就像火災和遺忘一樣,使用單步執行存儲過程來創建SQL作業。您將調用sp_start_job,而不是調用存儲過程,它會在啓動作業後立即返回,而作業將異步執行,而不會將任何其他結果返回給應用程序。

相關問題