.net core 如何在EF Core 2.2中为Oracle设置执行策略?

.net core 如何在EF Core 2.2中为Oracle设置执行策略?,.net-core,entity-framework-core,.net Core,Entity Framework Core,我想通过使用DbContext注入在Entity Framework Core 2.2中为Oracle设置执行策略。我正在使用NuGet包Oracle.EntityFrameworkCore连接到Oracle DB services.AddDbContext<MyContext>(options => { options.UseOracle(configuration.GetConnectionString("MyConnection")

我想通过使用DbContext注入在Entity Framework Core 2.2中为Oracle设置执行策略。我正在使用NuGet包Oracle.EntityFrameworkCore连接到Oracle DB

services.AddDbContext<MyContext>(options =>
        {
            options.UseOracle(configuration.GetConnectionString("MyConnection"), oracleOptionsAction: oracleOptions =>
            {
                oracleOptions.ExecutionStrategy(x => 
                    new MyExecutionStrategy();
            });
        });

DbExecutionStrategy类不存在于dotnet core中,仅存在于dotnet中。您必须实现抽象类ExecutionStrategy。 自定义执行策略类必须以以下方式定义:

public class MyExecutionStrategy : ExecutionStrategy
{
    public MyExecutionStrategy(ExecutionStrategyDependencies dependencies, int maxRetryCount, TimeSpan maxRetryDelay) 
        : base(dependencies, maxRetryCount, maxRetryDelay)
    {

    }

    protected override bool ShouldRetryOn(Exception exception)
    {        
        return true;
    }
}
然后,依赖项注入部分:

services.AddDbContext(options =>
{
    options.UseOracle(configuration.GetConnectionString("MyConnection"), oracleOptionsAction: oracleOptions =>
    {
        oracleOptions.ExecutionStrategy(dependencies => 
            new MyExecutionStrategy(
            dependencies,
            retryCount,
            retryDelay));
    });
});

DbExecutionStrategy类不存在于dotnet core中,仅存在于dotnet中。您必须实现抽象类ExecutionStrategy。 自定义执行策略类必须以以下方式定义:

public class MyExecutionStrategy : ExecutionStrategy
{
    public MyExecutionStrategy(ExecutionStrategyDependencies dependencies, int maxRetryCount, TimeSpan maxRetryDelay) 
        : base(dependencies, maxRetryCount, maxRetryDelay)
    {

    }

    protected override bool ShouldRetryOn(Exception exception)
    {        
        return true;
    }
}
然后,依赖项注入部分:

services.AddDbContext(options =>
{
    options.UseOracle(configuration.GetConnectionString("MyConnection"), oracleOptionsAction: oracleOptions =>
    {
        oracleOptions.ExecutionStrategy(dependencies => 
            new MyExecutionStrategy(
            dependencies,
            retryCount,
            retryDelay));
    });
});