DotNet Core 3.1 EF Core 数据库迁移(Migration)

开发环境

编译器:VS2019
数据库:SqlServer 2019

运行环境

DotNet Core SDK(3.1.400)

SqlServer迁移方式

依赖包

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer

使用迁移命令需要的依赖包

Microsoft.EntityFrameworkCore.Tools
EntityFramework
Microsoft.EntityFrameworkCore.Design

迁移命令

1.创建第一个迁移
Add-Migration InitialCreate   

2.创建数据库和架构
Update-Database 

如果在实体中需要新增CreatedTimestamp 字段

public class Blog
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime CreatedTimestamp { get; set; }
}

执行如下命令创建新迁移:

Add-Migration AddBlogCreatedTimestamp

Update-Database

如果执行Update-Database异常需要删除上一个添加的迁移命令

删除上一个添加的迁移命令
Remove-Migration

appsettings.json配置

新增ConnectionString节点

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  
  "ConnectionString": {
    "SqlServer": "server=.;database=NetCoreDemo;uid=sa;pwd=123"
  }
}

Startup.cs配置如下

public void ConfigureServices(IServiceCollection services)
{
    string constr = Configuration.GetSection("ConnectionString:SqlServer").Value;
    services.AddDbContext<MyDbContext>(options =>
        options.UseMySQL(connstr, m => m.MigrationsAssembly("User.API"));

    services.AddControllersWithViews();
}

MySql迁移方式

依赖包

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Tools
MySql.Data.EntityFrameworkCore

appsettings.json配置

新增ConnectionString节点

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionString": {
    "MySql": "Data Source=localhost;port=3306;database=NetCoreDemo;User Id=root;Password=12345"
  }
}


Startup.cs配置如下

public void ConfigureServices(IServiceCollection services)
{
    var constr = Configuration.GetSection("ConnectionString:MySql").Value;
    services.AddDbContext<MyDbContext>(
          options.UseMySQL(connstr, m => m.MigrationsAssembly("User.API"));
          );

    services.AddControllersWithViews();
}

在依次执行上述迁移命令即可

注意执行命令时必须默认项目必须选择继承了DbContext 的那个程序集

可能会遇到的错误:
image

前面加上 EntityFrameworkCore 试试

EntityFrameworkCoreAdd-Migration InitialCreate

EntityFrameworkCoreUpdate-Database 

参考地址:https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/migrations/?tabs=vs

原文地址:https://www.cnblogs.com/imtudou/p/13664068.html