Asp.Net Core 6项目移至其他电脑后本地数据库数据丢失怎么恢复?
确认原始数据库文件的完整性
打包项目时很可能没把存有数据的原始数据库文件(比如.mdf或.db文件)包含进去。回到开发用的电脑,找到项目根目录下的数据库文件,检查里面是否有数据。如果有,直接将这个文件复制到新电脑项目的对应目录,覆盖新电脑上的空文件——别只复制输出目录里的副本,原始项目目录下的文件才是存数据的核心文件。修正连接字符串路径
打开appsettings.json,检查ConnectionStrings里的路径是否指向正确的文件。如果用相对路径,确保指向项目根目录的数据库文件,而非输出目录的副本。示例:"ConnectionStrings": { "DefaultConnection": "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\YourDatabase.mdf;Integrated Security=True" }可以在
Program.cs里加一行代码验证|DataDirectory|的实际指向,确保路径对应带数据的文件:Console.WriteLine(AppDomain.CurrentDomain.GetData("DataDirectory"));停止不必要的迁移操作
add-migration和update-database是用来更新数据库结构的,不会帮你恢复数据。如果新电脑上的数据库是全新的,迁移只会创建空表结构。直接使用带数据的数据库文件即可,仅当新旧电脑的数据库结构有差异时,再执行update-database同步结构。强制覆盖输出目录的空文件
即使设置了Copy to Output Directory为Copy if newer,如果输出目录里已经存在旧的空数据库文件,构建时可能不会自动覆盖。手动删除bin/Debug/net6.0这类输出目录里的数据库文件,再重新构建项目,确保带数据的文件被复制过去。手动附加LocalDB数据库
打开SQL Server Management Studio,连接到(LocalDB)\MSSQLLocalDB,右键点击「数据库」→「附加」,选择带数据的.mdf文件完成附加。之后修改连接字符串,直接指向附加后的数据库名称,示例:"ConnectionStrings": { "DefaultConnection": "Data Source=(LocalDB)\\MSSQLLocalDB;Initial Catalog=YourDatabaseName;Integrated Security=True" }
内容的提问来源于stack exchange,提问作者Samm

