.net core 2.1 MVC for MySQL 数据库中的瞬时故障处理
services.AddDbContext(options =>{options.UseSqlServer(mysqlConnection,sqlServerOptionsAction: sqlOptions =>{sqlOptions.EnableRetryOnFailure(maxRetryCount: 10,maxRetryDelay: TimeSpan.FromSeconds(30),errorNumbersToAdd: null);});});
我在以下位置找到了此代码片段:
这意味着 EnableRetryOnFailure 不适用于 MySQL 数据库.我现在如何设置重试、延迟等政策?
另外,如果我尝试设置 ExecutionStrategy 函数,我会得到这个:
然后我尝试使用以下方法创建自己的策略:
公共类MyStrategy:ExecutionStrategy{......}
但是现在如何使用这个类?
解决方案有一个用于此的库:https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql
设置步骤:
从 NuGet 下载
Pomelo.EntityFrameworkCore.MySql
.将此使用添加到您的类:
使用 Pomelo.EntityFrameworkCore.MySql.Infrastructure;
将此添加到您的
ConfigureServices
方法中:services.AddDbContextPool(选项 =>options.UseMySql("Server=localhost;Database=ef;User=root;Password=123456;",mySqlOptions =>{mySqlOptions.ServerVersion(新版本(5, 7, 17), ServerType.MySql).EnableRetryOnFailure(maxRetryCount: 10,maxRetryDelay: TimeSpan.FromSeconds(30),errorNumbersToAdd: null);}));
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); } ));
相关文章