在有项目工程的时候,直接
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?
本地库和远程库数据存在较大差异,不可能一个字段一个字段的手动更新。
敢问这个情况该怎么办?
建议用代码,不用命令行
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();//创建数据库
以前也试过这种方法,新库还可以,旧库的话记得貌似会被清除掉表内部的数据。还得先把数据导出来然后再导回去。
那个还是2.0的时候,不知道现在3.0解决这个问题没有,还是我的打开姿势不对
@写代码的相声演员:没毛病,我用的3.0的是的,正常走起!
导出本地库的建表语句,再服务器上执行可以吗
如果是新项目这么搞还OK,但是现在服务器上的数据库里是有数据的,如果要用脚本就得自己一点一点摘出可用部分的脚本,比较麻烦
@写代码的相声演员: 有那种比较两个数据库差异自动生成sql的工具吧,反正mysql是有的。
https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/migrations/
数据结构改变,本地生成迁移脚本后在生产环境运行。 至于数据,也使用脚本导出后导入。