前言
如果大家刚使用EntityFramework Core作为ORM框架的话,想必都会遇到数据库迁移的一些问题。
起初我是在ASP.NET Core的Web项目中进行的,但后来发现放在此处并不是很合理,一些关于数据库的迁移,比如新增表,字段,修改字段类型等等,不应该和最上层的Web项目所关联,数据的迁移文件放到这里也感觉有点多余,有点乱乱的感觉,所以才想着单独出来由专门的项目进行管理会比较好,也比较清晰!
注意目标框架选择的是.NET Core 2.0而不是.NET Standard 2.0。
0、前期准备
a)、表实体定义,这个是在.NET Standard 2.0的类库中存放的。
/// <summary> /// 系统应用的用户实体 /// </summary> public class ApplicationUser : BaseModel { /// <summary> /// 用户名 /// </summary> public string UserName { get; set; } /// <summary> /// 密码 /// </summary> public string Password { get; set; } /// <summary> /// 邮件地址 /// </summary> public string Email { get; set; } }
b)、新建一个.NET Core 2.0的类库,并定义好我们所要使用的数据库上下文,很简单,接下来开始我们的正文
/// <summary> /// 系统上下文 /// </summary> public class LightContext : DbContext { public LightContext(DbContextOptions<LightContext> options) : base(options) { } /// <summary> /// 系统应用用户 /// </summary> public DbSet<ApplicationUser> ApplicationUser { get; set; } /// <summary> /// 角色表 /// </summary> public DbSet<Role> Role { get; set; } }
1、问题汇总
首先要确保仓储类库中已经引入以下两个Nuget包,没有的话请使用包管理器进行安装。不建议直接引入原包:Microsoft.AspNetCore.All,按需引入即可
Install-Package Microsoft.EntityFrameworkCore.SqlServerInstall-Package Microsoft.EntityFrameworkCore.Tools
a)打开CMD,然后切换到类库所在路径下,执行以下命令。不过你也可以使用程序包管理器控制台(PMC)进行迁移,但是会有少许变化,部分命令见下表: