EF5: nie można dołączyć pliku '{0} 'jako bazy danych' {1}'

Spotykam się z dokładnie opisanym problemem Tutaj (Czytaj sekcję "nie można dołączyć do usuniętego pliku MDF"), ale rozwiązanie problemu nie jest tam powiedziane...

W skrócie problem polega na tym, że po usunięciu pliku .mdf, następujący wyjątek jest wyrzucany, gdy próbuję uzyskać dostęp do DB za pomocą EF 5.0.

DataException->EntityException->SqlException:
nie można dołączyć pliku ' {0}' jako bazy danych '{1}'

Usunąłem Plik DB i teraz dostaję ten paskudny komunikat o błędzie podczas uruchamiania aplikacji, oczekując, że użyje inicjalizatora. Jak to naprawić?

Author: alamin, 2012-11-07

12 answers

Jeśli usuniesz plik DB, nadal pozostanie zarejestrowany w SqlLocalDB. Czasami naprawia to, aby usunąć DB. Możesz to zrobić z wiersza poleceń.

  1. Otwórz "Developer Command Propmpt for VisualStudio" w menu start/Programy.
  2. Uruchom następujące polecenia:

    sqllocaldb.exe stop v11.0

    sqllocaldb.exe delete v11.0

 221
Author: CodingWithSpike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-03 09:09:58

Dla tych, którzy wciąż szukają rozwiązania...

Przejdź do View / SQL Server Object Explorer i usuń bazę danych z podnodu (localdb)\v11.0!
Tutaj wpisz opis obrazka

Istnieje zasadniczo lokalna baza danych zachowana w miejscu, w którym powinny być pliki, a jeśli chcesz usunąć Pliki bazy danych, upewnij się, że usuwasz je z tego narzędzia Eksploratora, a nie ręcznie.

 147
Author: JSobell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-30 17:29:21

Najpierw wypróbowałem rozwiązanie JSobell, ale nie widziałem tam mojej bazy danych. Uruchomiłem polecenia CodingWithSpike z wiersza poleceń dewelopera VS, ale to też nie działało. W końcu uruchomiłem CodingWithSpike te same polecenia z konsoli Menedżera pakietów i to zadziałało.

    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.
 19
Author: AJs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-25 20:42:15

W porządku.

Moje rozwiązanie było proste, zmieniłem na serwer lokalny:

Zmieniłem atrybut DataSource w łańcuchu połączeń z:

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

Do:

Data Source=.\SQLEXPRESS;blah

Innym rozwiązaniem jest zalogowanie się do LocalDb poprzez SQL Management Studio i próba usunięcia tej bazy danych:

Tutaj wpisz opis obrazka

Jednak nie zadziałało dla mnie, kiedy próbuję go usunąć, jest napisane " tytuł: Microsoft SQL Server Management Studio

Baza danych '{0} ' nie istnieje na serwerze. (SqlManagerUI)

Gdy próbuję go odłączyć, baza danych nie pojawia się na liście wyboru odłączyć, "Take offline" również przenosi mnie do błędu powyżej.

Co skłania mnie do myślenia, że jest to solidny błąd w LocalDB.
 9
Author: Shimmy Weitzhandler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-14 22:58:51

Najprostszą poprawką jest po prostu zmiana nazwy DB w łańcuchu połączeń. Zobacz blog Rowan Millers Jak zrzucić bazę danych z Visual Studio 2012 dla alternatywnych rozwiązań. Mamy nadzieję rozwiązać ten problem w przyszłej edycji.

 4
Author: RickAndMSFT,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-30 17:53:56

Najlepsza i łatwa odpowiedź właśnie ją rozwiązałem, Po prostu użyj nazwy ur SQL server jako źródła danych, początkowy katalog będzie nazwą bazy danych i tam go usunąć linię mdf

 2
Author: gifted,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-17 12:53:06

W moim przypadku używam migracji i w config po prostu zmieniłem nazwę samej klasy dataContext i dataContext( wystarczy zmienić nazwę), potem spróbować ponownie i to pomogło

 1
Author: no0bassss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-27 05:46:22

Dla SQL 2014 proszę śledzić CodingWithSpike wybraną odpowiedź i ten komentarz

Na marginesie, Wersja 11.0 jest specyficzna dla SQL LocalDB 2012. Jeśli jesteś za pomocą LocalDB 2014 MS zmienił nazwę na MSSqlLocalDb. – CodingWithSpike Aug 29 ' 14 at 19: 20

 1
Author: The One,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-22 14:57:28

Miałem ten sam problem i rozwiązałem go ręcznie ustawiając folder "DataDirectory" na inny folder w moich binariach aplikacji.

Umieściłem tę linię w globalnym.metoda ASAX Application_Start:

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

Mój łańcuch połączeń jest obecnie ustawiony na to:

<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" />

 0
Author: Filipe Scur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-22 16:25:47

Mogłem to naprawić zmieniając nazwę bazy danych w moim łańcuchu połączeń, z domyślnego aspnet - {numbers} na prostą nazwę, zadziałało.

 0
Author: Edgar Froes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-27 19:19:40

Połącz się z (LocalDb) \ v11. 0 używając SQL server management studio, Usuń db i wykonaj aktualizację bazy danych w konsoli Menedżera pakietów.

 0
Author: Nidhin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-28 19:03:54

Miałem ten sam problem. Uruchomiłem następujące polecenia w konsoli Menedżera pakietów i naprawiłem problem

sqllocaldb.exe stop MSSqlLocalDb

sqllocaldb.exe delete MSSqlLocalDb
 0
Author: Tony Newsom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-11 18:10:46