ASP.NET Core Web API中如何从DbContext恢复PostgreSQL数据库或生成备份
基于DbContext恢复PostgreSQL数据库的方案
核心结论
可以通过DbContext恢复数据库的完整结构(表、字段、约束、索引、关联关系等),但无法恢复原库中存储的业务数据,也无法生成包含业务数据的备份文件,仅能生成结构备份。
前提要求
- 你使用的是Entity Framework Core(EF Core)生成的DbContext
- 本地保留有完整的DbContext文件以及所有关联的实体类定义
具体操作步骤
方法1:直接生成可用数据库(推荐)
如果你的项目之前生成过EF Core迁移文件,直接执行如下操作即可:
- 先安装EF Core全局工具:
dotnet tool install --global dotnet-ef - 打开项目根目录,在终端执行命令:
dotnet ef database update - 命令执行完成后,会在你DbContext配置的PostgreSQL连接地址生成和原库结构完全一致的空数据库
方法2:生成SQL结构备份脚本
如果没有迁移文件,你可以直接导出完整的建库SQL脚本:
- 在项目根目录执行命令:
dotnet ef dbcontext script --output PostgreSql_Restore.sql - 生成的
PostgreSql_Restore.sql就是完整的结构备份脚本,你可以直接在pgAdmin、psql等PostgreSQL客户端执行该脚本,生成结构一致的空库
补充说明
如果需要恢复原库的业务数据,你需要查找之前是否有pg_dump生成的物理备份、云磁盘快照、逻辑备份文件等其他备份资源,仅靠DbContext无法恢复任何业务数据。
内容的提问来源于stack exchange,提问作者Houssem Ghediri
相关产品推荐
相关产品推荐

