mysql - .net core 2.1 MVC for MySQL 数据库中的瞬态故障处理
问题描述
services.AddDbContext<MyContext>(options =>
{
options.UseSqlServer(mysqlConnection,
sqlServerOptionsAction: sqlOptions =>
{
sqlOptions.EnableRetryOnFailure(
maxRetryCount: 10,
maxRetryDelay: TimeSpan.FromSeconds(30),
errorNumbersToAdd: null);
});
});
我在以下位置找到了此代码段:
我的数据库是 MySQL 5.7
我将上面的代码更改为:
这意味着 EnableRetryOnFailure 不适用于 MySQL DB。我现在如何设置重试、延迟等策略?
另外,如果我尝试设置 ExecutionStrategy 功能,我会得到:
然后我尝试使用以下方法创建我自己的策略:
public class MyStrategy: ExecutionStrategy
{
......
}
但是现在如何使用这个类?
解决方案
有一个库: https ://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql
设置步骤:
从NuGet 下载
Pomelo.EntityFrameworkCore.MySql
。将此使用添加到您的课程中:
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); } ));
推荐阅读
- android - 如何使应用发布符合 Google Play 64 位要求 Google 错误
- php - 如何使用 PHP 生成多个 PDF 并通过电子邮件附件发送?
- swift - 协议一致性检查
- docker - portainer.io 的入口点不像在 Docker 映像中那样工作
- java - 如何使用 Spring Boot/Spring Data 实现历史数据更改
- javascript - 在 React 中显示多个 API 响应
- javascript - JQuery Autocomplete没有在移动设备的键盘后按上调用更改方法
- .net - .gitlab-ci.yml 用于 .NET 框架
- r - 为什么 == 给我 FALSE 尽管在 R 中是相同的值
- nullpointerexception - .getcurrentrow (DCIteratorBinding) 一小时后返回 null