无法将文件*.mdf作为数据库附加

Joh*_*yer 68 .net database asp.net-mvc entity-framework asp.net-mvc-4

基本上我已经按照教程并决定.mdf之后删除该文件.

现在每当我尝试运行应用程序时,我都会收到以下错误(此主题的标题).我收到错误的代码如下所示(ASP.NET MVC 4):

OdeToFoodDB db = new OdeToFoodDB();

public ActionResult Index()
{
    var model = db.Restaurants.ToList();
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

我的连接字符串如下:

<add name="DefaultConnection" 
     connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=OdeToFoodDb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\OdeToFoodDb.mdf" 
     providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

我已经尝试过查看SQL Server对象资源管理器,但它看起来如下:

此外,在服务器资源管理器中,我看不到任何数据连接.

当我尝试在服务器资源管理器中添加新连接时,我看不到任何名为的数据库OdeToFoodDb.

对于这个广泛的问题,我很抱歉,但我是Entity Framework的新手,并且不太明白这里有什么问题.

Dav*_*rdi 116

我认为对于SQL Server Local Db,您不应该使用该Initial Catalog属性.我建议使用:

<add name="DefaultConnection" 
     connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\OdeToFoodDb.mdf" 
     providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

我认为本地数据库不支持同一mdf文件上的多个数据库,因此不支持指定初始目录(或者不支持,并且我有一些奇怪的错误).

  • 从连接字符串中删除"初始目录"部分为我解决了这个问题. (15认同)
  • 这是问题的实际答案,或者至少对于这个bug来说是一个更好的解决方法.关于这个问题的正式答案是错误的. (8认同)
  • 所有其他建议都是完全矫枉过正的.这很简单,简洁而且有效. (2认同)
  • 换句话说,对于localdb,您需要将"initial catalog = ..."替换为"AttachDBFilename = ...",否则在尝试打开连接时将获得随机SqlExceptions. (2认同)

Chr*_*ris 56

看看这个:实体框架不创建数据库

我会尝试给数据库一个不同的名称.有时,在尝试第二次创建具有相同名称的数据库时,您可能会遇到SQL Express问题.有一种方法可以使用SQL Server Management Studio解决此问题,但通常更容易使用不同的数据库名称.

编辑 此答案已被接受,因为它确认了错误以及OP使用的解决方法(重命名数据库可能有所帮助).我完全同意重命名数据库并不是一种可接受的方式,并不能完全解决问题.不幸的是,我没有检查其他方法在SSMS中真正解决它.

  • 我真的很想知道使用SSMS的这个修复,因为我遇到了同样的问题,我想保持数据库名称不变. (3认同)
  • 哟不需要那样做,只从visual studio SQL Server对象资源管理器视图中删除de数据库(和关闭连接) (3认同)

小智 34

  1. 从包管理器控制台运行:

    sqllocaldb.exe stop v11.0

    sqllocaldb.exe delete v11.0

  2. 运行您的项目

  3. 注册用户


Ahm*_*ssa 15

从应该执行此操作的连接字符串中删除此行;)"AttachDbFilename = | DataDirectory | whateverurdatabasenameis-xxxxxxxxxx.mdf"

  • 等等 什么?要么指定db-file,那么你绝对需要这一行,否则就不需要.那你绝对要省略这一行.这绝不是解决潜在的问题. (10认同)

小智 6

"无法将文件'C:\ Github\TestService\TestService\App_data\TestService.mdf'作为数据库'TestService'附加

当您遇到上述错误消息时,请执行以下步骤.

  1. 打开SQL Server对象资源管理器
  2. 单击刷新按钮.
  3. 展开(localdb)\ MSSQLLocalDB(SQL Server 12.x.xxxxx - xxxxx\xxxx)
  4. 展开数据库
  5. 请删除现有的同名数据库
  6. 单击右键,然后删除
  7. 返回到包管理控制台
  8. 更新数据库


CI *_*pps 5

我遇到了同样的问题.VS 2013中的以下步骤为我解决了这个问题:

  1. 在Server Explorer中添加新的Connect to Database
  2. 选择Microsoft SQL Server数据库文件作为数据源
  3. 根据web.config中的连接字符串选择数据库文件名
  4. 创建了新的数据库文件,并在服务器资源管理器中出现了两个数据库连接:"MyDatabaseName"和"MyDatabaseName(MyProjectName)"
  5. 删除一个连接(我删除了"MyDatabaseName")