首页 新闻 会员 周边

EF Core 发布后的项目如何迁移数据库

0
[已解决问题] 解决于 2019-10-31 20:44

在有项目工程的时候,直接

add-migration  或  dotnet ef migrations add
update-database 或 dotnet ef database update

就可以迁移数据库

但是将项目Releas以后搬到了服务器上以后, EFCore的Command-line可以正常运行,但是一直在报错

No project was found. Change the current working directory or use the --project option.

 

说是找不到项目文件,难道我还要把整个项目文件搬到服务器上?还要在装一套SDK?

本地库和远程库数据存在较大差异,不可能一个字段一个字段的手动更新。

敢问这个情况该怎么办?

写代码的相声演员的主页 写代码的相声演员 | 小虾三级 | 园豆:517
提问于:2019-09-17 15:44
< >
分享
最佳答案
1

建议用代码,不用命令行
https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/ensure-created

using var db = new ChargeDbContext();
var sql = db.Database.GenerateCreateScript();//得到所有表SQL

//codefirst 生产数据库
db.Database.EnsureDeleted();//删除数据
db.Database.EnsureCreated();//创建数据库

奖励园豆:5
张朋举 | 小虾三级 |园豆:1915 | 2019-09-17 16:32

以前也试过这种方法,新库还可以,旧库的话记得貌似会被清除掉表内部的数据。还得先把数据导出来然后再导回去。

那个还是2.0的时候,不知道现在3.0解决这个问题没有,还是我的打开姿势不对

写代码的相声演员 | 园豆:517 (小虾三级) | 2019-09-19 09:10

@写代码的相声演员:没毛病,我用的3.0的是的,正常走起!

张朋举 | 园豆:1915 (小虾三级) | 2019-09-19 16:05
其他回答(2)
0

导出本地库的建表语句,再服务器上执行可以吗

会长 | 园豆:12401 (专家六级) | 2019-09-17 16:05

如果是新项目这么搞还OK,但是现在服务器上的数据库里是有数据的,如果要用脚本就得自己一点一点摘出可用部分的脚本,比较麻烦

支持(0) 反对(0) 写代码的相声演员 | 园豆:517 (小虾三级) | 2019-09-19 09:03

@写代码的相声演员: 有那种比较两个数据库差异自动生成sql的工具吧,反正mysql是有的。

支持(0) 反对(0) 会长 | 园豆:12401 (专家六级) | 2019-09-19 09:11
0

https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/migrations/
数据结构改变,本地生成迁移脚本后在生产环境运行。 至于数据,也使用脚本导出后导入。

the boy、图样图森破 | 园豆:112 (初学一级) | 2019-09-18 19:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册