C# 我能';格式化磁盘后找不到我的SQL Server数据库

C# 我能';格式化磁盘后找不到我的SQL Server数据库,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我正在使用Entity Framework开发一个C#应用程序,其中我以两种模式(手动/自动)查询SQL Server数据库。我对现有数据库使用了代码优先的方法 手动模式正在运行,我开始使用自动模式。我的电脑需要格式化,所以我拿了一份我的项目副本(它在D:\)。在格式化之后,我重新安装了VisualStudio,并在项目中的另一个路径上继续工作 在检查SQL Server对象资源管理器时,我没有找到以前拥有的数据库表 [SQL_ServerObjectExplorer] 我试着提神,但效果相同

我正在使用Entity Framework开发一个C#应用程序,其中我以两种模式(手动/自动)查询SQL Server数据库。我对现有数据库使用了代码优先的方法

手动模式正在运行,我开始使用自动模式。我的电脑需要格式化,所以我拿了一份我的项目副本(它在
D:\
)。在格式化之后,我重新安装了VisualStudio,并在项目中的另一个路径上继续工作

在检查SQL Server对象资源管理器时,我没有找到以前拥有的数据库表

[SQL_ServerObjectExplorer]

我试着提神,但效果相同


那么,我的数据库表到哪里去了?

数据库很可能存在,因为您的应用程序代码在找不到默认数据库时创建了一个默认数据库。这是EF Code First的默认实现,启用了迁移

那么,我的数据库表到哪里去了

重新格式化清除了所有内容,但您的代码似乎没有配置必要的迁移步骤来创建所需的表,或者您的迁移策略没有设置为自动升级到最新版本

另一个第一次很难注意到的问题是,如果迁移没有得到仔细的管理,特别是在项目开始时,或者这是您的第一个代码优先项目,如果在迁移执行期间出现SQL或其他异常,那么将不会执行迁移

我将首先尝试在package manager控制台中运行以下命令:

update-database
很简单,我知道。。。如果您在代码中启用了自动迁移,但没有处理引发的异常,那么在用户看来,应用程序就好像没有加载一样。因此,从VS中执行迁移并检查输出

如果没有要应用的迁移,那么可能是代码中没有要实际应用的迁移,这可能意味着您正在手动或通过其他技术管理数据库架构,或者配置出现了其他问题,这完全取决于您的特定项目环境,这是一条不适合SO职位的路

然而。。。您可以短路所有这些,然后运行以下操作,尝试生成一个新的迁移,将您从零迁移到编码模式现在所在的位置:

add-migration AfterFormat

如果这会生成一个空的新迁移脚本,则不会有任何更改,如果是这种情况,则说明您只是使用了错误的连接字符串,或者EF DbContext中没有定义表…

是否安装了sql server?您说您“复制了我的项目”,这到底是什么意思?您能否查看此副本并查看您的SqlServer.mdf和.ldf文件是否存在?如果您进行了备份…您是否在SqlServer中还原了该备份?我认为数据库不再存在。在格式化之前,您采取了哪些步骤来备份数据库?SQL Server是一个独立的产品,它有一个独立的安装和一个独立于应用程序代码和二进制文件的数据存储位置。如果您没有备份数据库,则数据库很可能已丢失。