services.AddDbContext<MyContext>(options =>
{
options.UseSqlServer(mysqlConnection,
sqlServerOptionsAction: sqlOptions =>
{
sqlOptions.EnableRetryOnFailure(
maxRetryCount: 10,
maxRetryDelay: TimeSpan.FromSeconds(30),
errorNumbersToAdd: null);
});
});
I found this code snippet at:
https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/implement-resilient-applications/implement-resilient-entity-framework-core-sql-connections
My DB is MySQL 5.7
I changed the above code to :
That means EnableRetryOnFailure is not available for MySQL DB. How do i set the retry, delay etc.. policies now?
Also if i try to set the ExecutionStrategy function i get this:
Then i tried Create my own Strategy using:
public class MyStrategy: ExecutionStrategy
{
......
}
but how to use this class now?
There is a library for this: https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql
Setup steps:
Donwload Pomelo.EntityFrameworkCore.MySql
from NuGet.
Add this using to your class:
using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
Add this to your ConfigureServices
method:
services.AddDbContextPool<ApplicationDbContext>(
options => options.UseMySql("Server=localhost;Database=ef;User=root;Password=123456;",
mySqlOptions =>
{
mySqlOptions.ServerVersion(new Version(5, 7, 17), ServerType.MySql)
.EnableRetryOnFailure(
maxRetryCount: 10,
maxRetryDelay: TimeSpan.FromSeconds(30),
errorNumbersToAdd: null);
}
));
If you're using .NET 5, to avoid does not contain a definition for 'ServerVersion'
you can use the following:
services.AddDbContext<AppDbContext>(options =>
{
string connectionString = AppConfig.Configuration.GetConnectionString("DefaultConnection");
options.UseMySql(connectionString,
ServerVersion.AutoDetect(connectionString),
mySqlOptions =>
mySqlOptions.EnableRetryOnFailure(
maxRetryCount: 10,
maxRetryDelay: TimeSpan.FromSeconds(30),
errorNumbersToAdd: null);
);
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With