ABC*_*DEF 3 mysql entity-framework-core .net-core asp.net-core
services.AddDbContext<MyContext>(options =>
{
options.UseSqlServer(mysqlConnection,
sqlServerOptionsAction: sqlOptions =>
{
sqlOptions.EnableRetryOnFailure(
maxRetryCount: 10,
maxRetryDelay: TimeSpan.FromSeconds(30),
errorNumbersToAdd: null);
});
});
Run Code Online (Sandbox Code Playgroud)
我在以下位置找到了此代码片段:
我的数据库是 MySQL 5.7
我将上面的代码更改为:
这意味着 EnableRetryOnFailure 不适用于 MySQL DB。我现在如何设置重试、延迟等策略?
另外,如果我尝试设置 ExecutionStrategy 函数,我会得到这个:
然后我尝试使用以下方法创建自己的策略:
public class MyStrategy: ExecutionStrategy
{
......
}
Run Code Online (Sandbox Code Playgroud)
但是现在如何使用这个类?
huj*_*omi 10
有一个库:https : //github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql
设置步骤:
Pomelo.EntityFrameworkCore.MySql从 NuGet下载。
将此添加到您的课程中:
using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
将此添加到您的ConfigureServices方法中:
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);
}
));
Run Code Online (Sandbox Code Playgroud)如果您使用的是 .NET 5,为了避免这种情况does not contain a definition for 'ServerVersion',您可以使用以下命令:
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);
);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4636 次 |
| 最近记录: |