初始化数据库时发生异常。

10

我正在做一个基于代码优先的Entity数据库。

{"初始化数据库时发生异常。有关详细信息,请参见InnerException。"}

它之前一直运行良好,但我决定删除物理数据库以查看是否能重新创建它,但每次都失败了。

我遇到了错误:

无法将文件'C:\ASP\OdeToFood\OdeToFood\App_Data\OdeToFoodDb.mdf'附加为数据库'OdeToFoodDb'。

因为这是代码优先,所以我不明白为什么它不能重新创建数据库。


你使用过迁移功能吗?你可能需要修剪掉旧的迁移并重新开始。我发现有时代码会被误解。 - Nomad101
我不知道怎么做? - Dale Fraser
这对你来说应该非常有用 http://msdn.microsoft.com/zh-cn/data/jj591621.aspx - Nomad101
1
我不是在进行代码迁移。我有一个没有数据库的Code First模型,我只想让它重新创建。我不应该写任何代码来完成它。我可能只需要重新初始化一些东西。 - Dale Fraser
我的意思是,你可以轻松地使用迁移功能来生成你的数据库。我相信这只需要在控制台中输入一行代码即可。 - Nomad101
我已经尝试过了,但是还是出现了相同的错误。无法将文件'C:\ ASP \ OdeToFood \ OdeToFood \ App_Data \ OdeToFoodDb.mdf'附加为数据库'OdeToFoodDb'。 - Dale Fraser
1个回答

14

所以从Visual Studio中删除文件是个愚蠢的想法。

SQL仍然注册了它。

打开MS SQL管理工具,在我的情况下连接到服务器

(local)\v11.0

你会看到数据库仍然存在,删除它,你会收到一个错误提示。这个文件不存在。刷新后,该数据库已从SQL中删除。现在重新运行你的代码,一切都好了。

所以要从管理工具而不是Visual Studio中删除数据库。


3
您可以通过 "SQL Server对象资源管理器" 在Visual Studio内保存下载。 - David Burela
应该是这样的:(localdb)\v11.0 (本地-->localdb) - Danniel Little
1
我也曾经遇到过同样的问题,即从之前正常工作的VS中删除了mdf文件。但是这个解决方案对我没有帮助,因为我无法在服务器管理工具中看到我的数据库或表。我的表不在本地数据库中,我也无法通过服务器管理工具找到它并像你说的那样将其删除。 - Rinoy Ashokan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接