Entity Framework 核心的自定义执行策略

Custom Execution Strategy With Entity Framework Core

我有一个 .Net Core 3.1 Windows 服务 运行 使用带有自定义 ExecutionStrategy 的 EF Core。此策略在 ShouldRetryOn() 中具有一些逻辑,可在发生异常时执行基于时间的日志记录。从我需要的时候发出警告的角度来看,它工作得很好。

我想知道 ExecutionStrategy 中是否有办法知道重试尝试是否成功。假设我的 MaxRetryCount 为 10,但在重试 3 次后成功了,我想知道是否成功。

我确实研究了 ExecuteExcecuteAsync 方法,但它们只被调用一次,因此似乎没有办法与它们相关联。我在 ExecutionStrategy 中没有看到我可以用来接收通知的任何其他内容。

我给 EF 团队做了一个 related post on github

To know if the operation succeeded in general (with or without retries), you can override Execute and ExecuteAsync, call their base methods, and if those base methods haven't raised any exception, then the operation succeeded.