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 的那个程序集
可能会遇到的错误:
前面加上 EntityFrameworkCore 试试
EntityFrameworkCore\Add-Migration InitialCreate
EntityFrameworkCore\Update-Database
参考地址:https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/migrations/?tabs=vs