【问题标题】:Stored procedures fire and forget with Entity Framework使用 Entity Framework 存储过程触发并忘记
【发布时间】:2011-07-14 14:30:51
【问题描述】:

我在应用程序中使用 Entity Framework 4.1。其中一项要求是在数据库上执行一些存储过程,其中一些需要相当长的时间。此外,这些存储过程不会返回任何结果,所以我只需要启动它们就可以忘记它们。

自然,.NET 将等待这些操作完成,因此在一段时间后它会引发“超时期限已过”的异常。

我知道我可以通过将 CommandTimeout 属性设置为更高的值来解决这个问题,但是我正在寻找替代解决方案(如果存在的话)。

是否可以使用 Entity Framework 作为 Fire-and-Forget 来执行存储过程?

我们将不胜感激。

问候

【问题讨论】:

    标签: stored-procedures entity-framework-4.1 fire-and-forget


    【解决方案1】:

    存储过程不支持fire and forget execution。您可以使用普通 ADO.NET 并在单独的连接上异步执行查询(使用BeginExecuteNonQuery)。 EF 不支持异步执行。另一种更复杂的行为方式就像一劳永逸的方式是通过单步执行您的存储过程来创建 SQL 作业。您将调用sp_start_job,而不是调用您的存储过程,它会在启动作业后立即返回,并且作业将异步执行,而不会将任何其他结果返回给您的应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多