改造NET5开源框架实现Code First数据迁移

本次演示用到一个开源框架,但是这个开源框架还是比较年轻的,期间会遇到不少问题。为了少走弯路我将本每一步都写出来

开源框架地址

https://github.com/neozhu/smartadmin.core.urf

先来热热身,什么是DB First ,什么是Code First

这两个要有一个认知,DB First先建立表再写代码,Code First 先写代码数据库表自动建立,也是现在比较流行的做法。当然DB First也是很好的。

需要准备工作

1.Visual Studio 2019 确保已经有NET5运行时

 

 2.下载上面的开源项目,期间有很多包在加载,如果是黄色叹号请等待加载完即可

 

 3.安装LocalDb(这个是轻量化只能本地连接的一个Sql Server数据库,供学习测试使用)去微软下载一个LocalDb2019安装就好。

 

 

 

 

 

安装就好了,安装完成之后试一下能不能登录上去 记得是这样连接的 (LocalDb)\MSSQLLocalDB

 

 

 

 

 

 好了上面工作好了之后.

 

打开这个开源项目

 

 确保没有叹号,如果叹号都解决不了,那也不用做其他的事了,回去凑小孩吧。

4.我们这里使用Code First迁移创建数据库,当然也可以直接附件开源项目中的mdf数据库文件。但是我们本文的主题是Code First,那当然不能去搞数据库啦,应该更高级一点

 

 这时候我们看到数据库是没有我们的数据库的。直接运行项目肯定不行了。

 

 

打开这个管理包命令,我们开始迁移数据库了

 

 

 

 

 

 记得先把这个Data这里设置为启动项目,不然等下打命令各种各样问题哦

【1】给迁移搭建基架,运行:Add-Migration InitialCreate命令,InitialCreate自定义名
【2】将新迁移数据创建数据库,运行:Update-Database

 

 这时候看下数据库里面是否自动生成了数据库

 

 

那么数据库生成了之后自然我们可以很happy地运行项目了,记得把启动项目改回去WebUI那个

 

 

结果一运行发现,什么鬼,居然报错,但是一看就知道了,数据库表中居然没有生成这个表,那么为啥呢?我们找啊找,在

 

 

这里找到了,有两种解决方法,解决方法1就是在数据库中自己新建这个表,第二种,就是想办法把这个加到SmartDbContext中

但是那还是咋们的作风么,明显不是

 

 

 

在Model这里直接自己新建一个

PM> add-migration create_Log
Build started...
Build succeeded.
To undo this action, use Remove-Migration.
PM> update-database
Build started...
Build succeeded.
Applying migration '20210305071817_create_Log'.
Done.
PM>

执行上面命令后发现

 

 

数据库已经有了这个表了。这时候就可以开心一下了

。但是注意运行的时候因为我们CodeFirst生成的数据库和表没有数据的,还需要用到基础数据,那么Code First生成迁移数据库就到这里,删除掉数据库,

直接附加他的mdf

他这里程序已经设计好自动附件了注意修改你的mdf路径 

 

 

 

 

多说一句,要自己检查一下LocalDB安装成功没有哦

sqllocaldb.exe i  // 查看已经有的localdb的实例

   sqllocaldb.exe v // 电脑上安装的localdb的所有版本

   sqllocaldb.exe s [实例名] // 启动这个实例

   sqllocaldb.exe -? // 这个命令的帮助信息 

 

C:\Users\jhzou>sqllocaldb.exe v
Microsoft SQL Server 2019 (15.0.2000.5)

C:\Users\jhzou>sqllocaldb create mylocaldb
LocalDB instance "mylocaldb" created with version 15.0.2000.5.

C:\Users\jhzou>sqllocaldb.exe start mylocaldb
LocalDB instance "mylocaldb" started.

 

这些命令用得上

我这里用我自己创建的一个数据库实例,记得字符串要改实例哦

 

 

 

 

 

是不是很6?这样就做好了。好好学习,不要让战斗停下来!

 

posted @ 2021-03-05 16:15  wrjhzou  阅读(287)  评论(0编辑  收藏  举报