重写MigrationsModelDiffer
public class MigrationsModelDifferWithoutForeignKey:MigrationsModelDiffer
{
public MigrationsModelDifferWithoutForeignKey(IRelationalTypeMappingSource typeMappingSource, IMigrationsAnnotationProvider migrationsAnnotationProvider, IRowIdentityMapFactory rowIdentityMapFactory, CommandBatchPreparerDependencies commandBatchPreparerDependencies) : base(typeMappingSource, migrationsAnnotationProvider, rowIdentityMapFactory, commandBatchPreparerDependencies)
{
}
public override IReadOnlyList<MigrationOperation> GetDifferences(IRelationalModel? source, IRelationalModel? target)
{
var operations = base.GetDifferences(source, target)
.Where(op => !(op is AddForeignKeyOperation))
.Where(op => !(op is DropForeignKeyOperation))
.ToList();
foreach (var operation in operations.OfType<CreateTableOperation>())
operation.ForeignKeys?.Clear();
return operations;
}
}
在program.cs里配置
builder.Services.AddDbContext<Mycontext>(option =>
{
option.UseMySql(builder.Configuration.GetConnectionString("BackDatabaseConnection"),
new MySqlServerVersion(new Version(8, 0, 33)));
option.ReplaceService<IMigrationsModelDiffer, MigrationsModelDifferWithoutForeignKey>();
});
迁移文件类的AddMigration和DropMigration全都不见了nice