EF Core 数据迁移有2种方式:
1. 程序包管理器控制台 , Package Manager Console(PMC)
-用vs 开发建议使用PMC迁移方式,该方式是同时支持efcore和原先的ef 迁移的功能
PMC迁移命令:
创建迁移:add-migration migrationName migrationname为迁移名称
移除迁移(删除最近的一次迁移) : remove-migration
应用所有的迁移(使迁移文件应用到数据库):update-database
指定版本进行迁移:update-database migrationName
生成对应版本的脚本:Script-Migration 生成成功是会有个临时文件记录修改的SQL语句的脚本
生成步骤:
1.VS 菜单 -工具-Nuget包管理器-程序包管理控制台 (注意默认启动项目)
2.xxxxApplicationAutoMapperProfile.cs文件确认是否有对应映射关系代码:
如:CreateMap<BaseLogs, LogDto>();等等
3.xxxxDbContextModelCreatingExtensions.cs 类添加对应数据表结构
如: public static void ConfigureOrder(this ModelBuilder builder)
{
Check.NotNull(builder, nameof(builder));
builder.Entity<Order>(s =>
{
s.ToTable("t_order");
s.ConfigureByConvention();
s.Property(s => s.OrderId).HasColumnName("OrderId").HasMaxLength(36);
}
}
4.xxxxDbContext.cs类中添加对应的方法
xxxxMigrationDbContext.cs类中也需要添加 对应的方法
如:
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.ConfigureOrder();
}
对应第3步的 ConfigureOrder 方法名称
5.执行命令 add-migration migrationname migrationname为迁移名称
6.ADD成功以后 执行 update-database 命令
1.1 团队开发迁移方式 (供参考)
1.1.1 新建上下文 xxxxDbContext
1.1.2 新建DbContextFactory xxxDbContextFactory
1.1.3 Nuget 命令 add-migration -context xxxxDbContext -name xxx
--context 上下文对象 -name 迁移文件名称
1.1.4 update-database -context xxxxxDbContext 完成迁移
1.1.5 Script-Migration -Context xxxxDbContext 生成迁移报告
或者 Script-Migration -Context 20220101 执行指定文件生成迁移报告 SQL脚本
PMC数据迁移步骤完成
2. 跨平台命令行工具 ,Command line interface (CLI)
- dotnet ef migrations add 生成一条迁移
- dotnet ef migrations remove 删除最新一次迁移
- dotnet ef database update 生成迁移到数据库,跟上面pmc命令类似 后面加指定的迁移作为参数可以进行版本的回滚
- dotnet ef migrations script 也跟pmc类似 如果没有任何参数的话默认是生成所有sql脚本,但是参数格式略有不同如下:dotnet ef migrations script migrationName1 migrationName2 ; 是像这样直接跟迁移名称的也就是生成migrationName1 到migrationName2 的sql脚本