在ABP框架4.0版本以后,ABP官网地址 (https://aspnetboilerplate.com/Templates) 新添加了一个Tools项目,项目名称就是XXXX.Migrator
该项目为一个数据库初始化程序,所以右键解决方案还原NuGget包。之后生成解决方案。就首次运行该项目来初始化数据库(ABP框架内置的数据库表,ABP.XXX)
可以用于更新数据库,而不需要使用Update-Database来执行操作。
参考其他大牛的博客(15年左右的,并没有提到tools项目。所以按照使用Update-Database时笔者这里会报错,,)
https://www.cnblogs.com/farb/p/4925864.html
自己的实体使用Code First 。使用步骤:
1:创建实体类:
在XXXX.Core项目中添加你的实体类
这里只创建了一个,可以自行研究使用生成器创建。
2:创建DbContext,更新DbContext
在XXXX.EntityFramework项目中为你的实体类定义IDbSet
标注地方就是使用上一步骤 创建的 实体类,定义的IDbset”。
3:创建数据库迁移
打开vs2017/9 / 工具/ NuGet包管理器 /程序包管理器控制台
方框内注意要选中 xxxxx.EntityFramework项目,输入以下命令 ,Add-Migration “InitialData” ; “InitialData” 是生成的文件名,你可以自定义该参数
回车执行命令就能看到看到新生成的文件,如图所示
具体第二,三个文件含义,请执行,查阅资料,暂且不考虑
只关注第一个文件的内容:
大致如下
此时
关键一步来了,从网上查阅的资料都是使用
Update-Database 命令执行
但是笔者使用该命令老是报错,,,无奈尝试 使用这个tool项目可以成功生成数据表。
运行该程序(Tools文件夹下的XXXX.Migrator项目), 输入 Y 回车 。如图:
更新,另一种方式是添加数据种子文件:然后执行Update-Databse 也可,
具体操作步骤:
时间_InitialData_
格式的类文件(参考上文步骤3的描述)。,我们还会发现Migrations文件夹下有个SeedData文件夹,这个文件夹下的类主要是用来进行预置种子数据的。XXXX
类文件,代码如下(使用了另一个实体类,):之后在XXXX.EntityFramework项目中,找到Configuration类。添加以下代码,就是使用上步创建的
1 new DefaultTestDataForTask(context).Create();
数据库已经生成的表
完~