dotnet / dotnet/EntityFramework.Docs
Add a sample showing how to implement a suspendable execution strategy
- Dominant language
- Mermaid
- Stars
- 1.7k
- Forks
- 2k
- Avg merge
- 7d 23h
- Merged PRs (30d)
- 16
Description
```C#
public abstract class MyExecutionStrategy : SqlServerRetryingExecutionStrategy
{
public MyExecutionStrategy(
ExecutionStrategyDependencies dependencies)
: base(dependencies)
{
}
private static readonly AsyncLocal _suspend = new();
public static bool Suspend
{
get => _suspend.Value ?? false;
set => _suspend.Value = value;
}
public override bool RetriesOnFailure
=> !Suspend && base.RetriesOnFailure;
public override TResult Execute(
TState state,
Func operation,
Func>? verifySucceeded)
=> Suspend
? operation(Dependencies.CurrentContext.Context, state)
: base.Execute(state, operation, verifySucceeded);
public override Task ExecuteAsync(
TState state,
Func> operation,
Func>>? verifySucceeded,
CancellationToken cancellationToken = default)
=> Suspend
? operation(Dependencies.CurrentContext.Context, state, cancellationToken)
: base.ExecuteAsync(state, operation, verifySucceeded, cancellationToken);
}
```
Contributor guide
Assessment
This issue has not been assessed yet.