EF5: не удается прикрепить файл '{0} 'в качестве базы данных' {1}'



я сталкиваюсь с точной проблемой, как описано здесь (читайте раздел "не удается прикрепить к удаленному файлу MDF"), но решение проблемы там не сказано...



короче говоря проблема в том, что после удаления следующее исключение, когда я пытаюсь получить доступ к БД с помощью EF 5.0.




DataException - >EntityException - >SqlException:
не могу прикрепить файл ‘{0}' в качестве базы данных '{1}'




Я удалил файл БД, и теперь я получаю это неприятное сообщение об ошибке при запуске приложения, ожидая, что он будет использовать его инициализатор.
Как это можно исправить?

637   12  

12 ответов:

Если вы удалите файл БД, он по-прежнему остается зарегистрированным в SqlLocalDB. Иногда он исправляет его, чтобы удалить БД. Вы можете сделать это из командной строки.

  1. откройте "Developer Command Propmpt for VisualStudio" в меню Пуск/Программы.
  2. выполните следующие команды:

    sqllocaldb.exe stop v11.0

    sqllocaldb.exe delete v11.0

для тех, кто еще ищет решение...

перейдите в Обозреватель объектов View / SQL Server и удалите базу данных из подузла (localdb)\v11.0!
enter image description here

по существу, сохраняется локальная база данных, где должны быть файлы, и если вы хотите удалить файлы базы данных, убедитесь, что вы удалите их из этой утилиты проводника, а не вручную.

Я сначала попробовал решение JSobell, но не увидел там свою базу данных. Я запустил команды CodingWithSpike из командной строки VS Developer, но это тоже не сработало. Наконец, я запустил те же команды 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.

- хорошо.

мое решение было простым, я изменил, чтобы использовать локальный сервер:

Я изменил в строке подключения:

Data Source=(LocalDb)\v11.0;blah

To:

Data Source=.\SQLEXPRESS;blah

другое решение-войти в LocalDb через SQL Management Studio и попытаться удалить эту базу данных:

enter image description here

однако это не сработало для меня, когда я пытаюсь удалить его, он говорит: "название: Управление Microsoft SQL Server Студия

база данных "{0} " не существует на сервере. (SqlManagerUI)

когда я пытаюсь отсоединить его база данных не появляется в списке для отсоединения выбора, "take offline" также приводит меня к ошибке выше.

что заставляет меня думать, что это сплошная ошибка в LocalDB.

самое простое исправление-это просто изменить имя вашей БД в строке подключения. Смотрите блог Rowan Millers Как удалить базу данных из Visual Studio 2012 для альтернативных решений. Мы надеемся исправить эту проблему в будущем издании.

лучший и простой ответ я только что решил его сейчас, Просто используйте имя UR sql server в качестве источника данных, начальный каталог будет вашим именем базы данных, и там вы удалите строку mdf

в моем случае я использую миграции и в конфигурации я просто изменил имя dataContext и сам класс dataContext (просто переименовать), а затем повторите попытку, и это помогло

для SQL 2014, пожалуйста, следуйте CodingWithSpike выбранный ответ и этот комментарий

как Примечание стороны, v11.0 является специфичным для SQL LocalDB 2012. Если вы не используя LocalDB 2014, MS переименовала его в MSSqlLocalDb вместо. – CodingWithSpike 29 августа ' 14 в 19: 20

у меня была та же проблема, и я решил ее, вручную установив папку "DataDirectory" в другую папку в моих двоичных файлах приложения.

Я поставил эту строку в мировой.способ эйсакс событий Application_Start:

AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data"));

моя строка подключения в настоящее время установлена на это:

<connectionStrings>
    <add name="DataContext" connectionString="Data Source=(LocalDb)\v11.0; Initial Catalog=DataContext; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|DataContext.mdf"
  providerName="System.Data.SqlClient" />

Я мог бы исправить это, переименовав имя базы данных в моей строке подключения, от aspnet-{numbers} по умолчанию до простого имени, это сработало.

подключитесь к (LocalDb)\v11.0 с помощью SQL server management studio, удалите базу данных, а затем выполните обновление базы данных в консоли диспетчера пакетов.

У меня была та же проблема. Я выполнил следующие команды в консоли диспетчера пакетов, и это исправило проблему

sqllocaldb.exe stop MSSqlLocalDb

sqllocaldb.exe delete MSSqlLocalDb

Comments

    Ничего не найдено.