EF5:无法将文件"{0}"附加为数据库"{1}"

Shi*_*mmy 140 sql-server asp.net-mvc entity-framework-5 localdb visual-studio-2012

我遇到了这里描述的确切问题(阅读"无法附加到删除的MDF文件"部分),但问题的解决方案没有告诉那里......

简而言之,问题是在删除.mdf文件后,当我尝试使用EF 5.0访问数据库时,抛出以下异常.

DataException-> EntityException-> SqlException:
无法将文件"{0}"附加为数据库"{1}"

我确实删除了DB文件,现在我在运行应用程序期望它使用它的初始化程序时得到那个讨厌的错误消息.有任何解决这个问题的方法吗?

Cod*_*ike 220

如果删除DB文件,它仍然会在SqlLocalDB中注册.有时它会修复它以删除数据库.您可以从命令行执行此操作.

  1. 在开始/程序菜单下打开"VisualStudio的开发人员命令提示符".
  2. 运行以下命令:

    sqllocaldb.exe stop v11.0

    sqllocaldb.exe delete v11.0

  • 删除文件后,这对我有用.您还可以从工具 - >库包管理器 - >包管理器控制台运行命令. (18认同)
  • 另请注意,`v11.0`特定于SQL LocalDB 2012.如果您使用的是LocalDB 2014,则MS将其重命名为`MSSqlLocalDb`. (11认同)
  • 与上述注释相关,您也不能输入任何数据库名称,它只会应用于您的默认名称,我在下面使用vs2015并且工作正常:sqllocaldb.exe stop sqllocaldb.exe delete (4认同)
  • 你的答案救了我.我没有接受答案中的(localdb)\ v11.0子节点,我无法从SQL Management Studio中删除引用,所以欢呼你! (3认同)

JSo*_*ell 146

对于那些仍在寻找解决方案的人......

转到View/SQL Server对象资源管理器并从(localdb)\ v11.0子节点中删除数据库!
在此输入图像描述

实际上保留了文件所在位置的本地数据库,如果要删除数据库文件,请确保将其从此资源管理器实用程序中删除,而不是手动删除.

  • 此外,如果你没有看到它.只需添加一个新连接并输入"(localdb)\ v11.0"(使用Windows Auth).这看起来很简单,但我在那里盯着我的屏幕看了一会儿.:) (8认同)

小智 19

我首先尝试了JSobell的解决方案,但没有看到我的数据库列在那里.我从VS Developer Command Prompt运行了CodingWithSpike的命令,但这也没有用.最后,我从Package Manager Console运行了CodingWithSpike的相同命令.

    PM> sqllocaldb.exe stop v11.0
    LocalDB instance "v11.0" stopped.

    PM> 
    PM> sqllocaldb.exe delete v11.0
    LocalDB instance "v11.0" deleted.

    PM> sqllocaldb.exe start v11.0
    LocalDB instance "v11.0" started.
Run Code Online (Sandbox Code Playgroud)


Shi*_*mmy 9

好的.

我的解决方案很简单,我改为使用本地服务器:

我更改了DataSource连接字符串中的属性:

Data Source=(LocalDb)\v11.0;blah
Run Code Online (Sandbox Code Playgroud)

至:

Data Source=.\SQLEXPRESS;blah
Run Code Online (Sandbox Code Playgroud)

另一种解决方案是通过SQL Management Studio登录LocalDb,并尝试删除该数据库:

在此输入图像描述

但它对我不起作用,当我尝试删除它时,它说:"TITLE:Microsoft SQL Server Management Studio

服务器上不存在数据库"{0}".(SqlManagerUI)

当我尝试分离它时,数据库不会出现在分离选择列表中,"脱机"也会转到上面的错误.

这让我觉得这是LocalDB中的一个可靠错误.