EF5: не удается прикрепить файл '{0}' в качестве базы данных '{1}'
Я столкнулся с точной проблемой, описанной здесь здесь (раздел "Не удается подключиться к удаленному файлу MDF" ), но решение для проблема там не указана...
Короче говоря, проблема заключается в том, что после удаления файла .mdf
возникает следующее исключение, когда я пытаюсь получить доступ к БД с помощью EF 5.0.
DataException- > EntityException- > SqlException:
Невозможно прикрепить файл '{0}' в качестве базы данных '{1}'
Я удалил файл DB, и теперь я получаю это неприятное сообщение об ошибке при запуске приложения, ожидая его использования инициализатора.
Любой способ исправить это?
Ответы
Ответ 1
Если вы удаляете файл DB, он все равно остается зарегистрированным в SqlLocalDB. Иногда он исправляет это, чтобы удалить БД. Вы можете сделать это из командной строки.
- Откройте "Команда разработчика Propmpt для VisualStudio" в меню "Пуск/Программы".
-
Выполните следующие команды:
sqllocaldb.exe stop v11.0
sqllocaldb.exe delete v11.0
Ответ 2
Для тех, кто все еще ищет решение...
Перейдите в View/SQL Server Object Explorer и удалите базу данных из подноса (localdb)\v11.0!
![enter image description here]()
Существует, по существу, локальная база данных, где хранятся файлы, и если вы хотите удалить файлы базы данных, убедитесь, что вы удалили их из этой утилиты explorer, а не вручную.
Ответ 3
Сначала я попытался использовать решение JSobell, но не видел, чтобы моя база данных была там. Я выполнил команды CodingWithSpike из командной строки VS Developer Command, но это тоже не сработало. Наконец, я запускал 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.
Ответ 4
Хорошо.
Мое решение было простым, я изменил его на локальный сервер:
Я изменил атрибут DataSource
в строке подключения:
Data Source=(LocalDb)\v11.0;blah
To:
Data Source=.\SQLEXPRESS;blah
Другим решением является вход в LocalDb через SQL Management Studio и попытка удалить эту базу данных:
![enter image description here]()
Однако это не сработало для меня, когда я пытаюсь удалить его, он говорит: "TITLE: Microsoft SQL Server Management Studio
База данных '{0}' не существует на сервере. (SqlManagerUI)
Когда я пытаюсь отделить его, база данных не отображается в списке для отладки выбора, "В автономном режиме" также приводит меня к ошибке выше.
Это заставляет меня думать, что это сплошная ошибка в LocalDB.
Ответ 5
Самое простое исправить - просто изменить имя вашей БД в строке подключения. См. Блог Rowan Millers Как удалить базу данных из Visual Studio 2012 для альтернативных решений. Мы надеемся решить эту проблему в будущем издании.
Ответ 6
Лучший и легкий ответ, который я только что решил сейчас,
Просто используйте имя сервера sq sqr в качестве источника данных, исходный каталог - ваше имя базы данных, и вы удалите строку mdf
Ответ 7
В моем случае я использую миграции, а в config я просто изменил имя класса dataContext и dataContext (просто переименовал), затем повторите попытку, и это помогло
Ответ 8
Для SQL 2014, пожалуйста, следуйте выбранному ответу CodingWithSpike и этому комментарию
В качестве примечания, v11.0 специфичен для SQL LocalDB 2012. Если вы используя LocalDB 2014, MS переименовала его в MSSqlLocalDb. - CodingWithSpike 29 августа 14 в 19:20
Ответ 9
У меня была та же проблема, и я решил ее вручную, установив папку "DataDirectory" в другую папку в своих бинарных файлах приложений.
Я помещаю эту строку в метод Global.asax 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" />
Ответ 10
Я мог бы исправить это, переименовав имя DataBase в мое соединение String, начиная с по умолчанию aspnet- {numbers} до простого имени, он работал.
Ответ 11
Подключитесь к (LocalDb)\v11.0, используя студию управления сервером Sql, удалите db, а затем выполните обновление базы данных в консоли диспетчера пакетов.