.net Core Migration 步骤
参考代码地址:https://github.com/BBMMRunLoop/JK.GISService.git
- 必须包含Microsoft.EntityFrameworkCore.Tools的项目中
Cannot execute this command because 'Microsoft.EntityFrameworkCore.Tools' is not installed in project 'MuscleFellow.Data' - 必须要有实体类或者实体类对应的Models子项目,同时必须要有自定义好的DBContext,里面配置实现都完成。比如:
public class DomainModelContext : DbContex {
public DomainModelContext(DbContextOptions<DomainModelContext> options) : base(options) {
}
public DbSet<tabBaseInfo> tabBaseInfo { get; set; }
public DbSet<tabProjectInfo> tabProjectInfo { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<tabBaseInfo>().HasKey(m => m.id);
builder.Entity<tabProjectInfo>().HasKey(m => m.id);
base.OnModelCreating(builder);
} }
- 启动项目必须引用包含有自定义DbContext类的子项目
- 执行命令 Add-Migration jkgismirationsvvv 开始执行一次 用意是创建 Migration
执行完成后工程中多了一个文件夹如下图
可能会出现小错误如下图:
- 通过实体类初始化数据库,或者实体类结构修改了更新到数据库中。通过命令
Update-Database init 这个命令第一次不会成功,不管数据库中数据库是否存在都先要调用一次这个命令 Add-Migration init,这样后面再根据实体类更新数据库调用命令Update-Database init 就不会出错
参考项目结构如下图 所有的命令都是在启动项目 JK.GISService 下执行:
Mysql 需要引入哪些包:
在启动项目 如JK.GISService 下 project.json中引用
"SapientGuardian.EntityFrameworkCore.MySql": "7.1.14"
同时 在包管理控制台窗口 针对在启动项目 如JK.GISService 安装
工具‣的NuGet包管理器‣包管理器控制台
Install-Package Microsoft.EntityFrameworkCore.Tools –Pre
Install-Package Microsoft.EntityFrameworkCore
在project.json 中tools节点中增加
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" 如下:
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final",
"Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
},
sqlserver 需要引用哪些包
在启动项目 如JK.GISService 下
工具‣的NuGet包管理器‣包管理器控制台
Run Install-Package Microsoft.EntityFrameworkCore
Run Install-Package Microsoft.EntityFrameworkCore.SqlServer
Run Install-Package Microsoft.EntityFrameworkCore.Tools –Pre
Run Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design
在project.json 中tools节点中增加
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" 如下:
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final",
"Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
},