将候补迁移改为可重入:先检查列和索引是否存在,再执行 DDL。 附件中已经成功添加 WaitlistedAt、但索引创建失败的数据库可直接重试,不会报重复列。 运行时和 dotnet ef 连接统一开启 AllowUserVariables;Connector/NET 默认关闭该选项。Connector/NET 官方说明 增加所有 MySQL 索引名不得超过 64 字符的回归测试。
21 lines
714 B
C#
21 lines
714 B
C#
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Design;
|
|
|
|
namespace Jiaowu.Api.Infrastructure.Persistence;
|
|
|
|
public sealed class AppDbContextFactory : IDesignTimeDbContextFactory<AppDbContext>
|
|
{
|
|
public AppDbContext CreateDbContext(string[] args)
|
|
{
|
|
var connectionString =
|
|
Environment.GetEnvironmentVariable("ConnectionStrings__MySql")
|
|
?? "Server=localhost;Port=3306;Database=jiaowu;User=__design_time__;Password=__not_used__;";
|
|
|
|
var options = new DbContextOptionsBuilder<AppDbContext>()
|
|
.UseMySQL(MySqlConnectionStringPolicy.ForApplication(connectionString))
|
|
.Options;
|
|
|
|
return new AppDbContext(options);
|
|
}
|
|
}
|