Ich habe das genaue Problem wie hier beschrieben (siehe Abschnitt "Kann nicht an gelöschte MDF-Datei angehängt werden"), aber die Lösung des Problems wird dort nicht angegeben ...
Kurz gesagt, das Problem ist, dass nach dem Löschen der .mdf
Datei die folgende Ausnahme ausgelöst wird, wenn ich versuche, mit EF 5.0 auf die Datenbank zuzugreifen.
DataException-> EntityException-> SqlException: Die Datei '{0}' kann nicht als Datenbank '{1}' angehängt werden.
Ich habe die DB-Datei gelöscht und jetzt erhalte ich diese böse Fehlermeldung, wenn ich die Anwendung ausführe und erwarte, dass sie den Initialisierer verwendet. Wie kann man das beheben?
sql-server
asp.net-mvc
visual-studio-2012
entity-framework-5
localdb
Shimmy Weitzhandler
quelle
quelle
Antworten:
Wenn Sie die DB-Datei löschen, bleibt sie weiterhin bei SqlLocalDB registriert. Manchmal wird das Problem behoben, um die Datenbank zu löschen. Sie können dies über die Befehlszeile tun.
Führen Sie die folgenden Befehle aus:
sqllocaldb.exe stop v11.0
sqllocaldb.exe delete v11.0
quelle
v11.0
Nebenbei bemerkt, das ist spezifisch für SQL LocalDB 2012. Wenn Sie LocalDB 2014 verwenden, hat MS esMSSqlLocalDb
stattdessen in MSD umbenannt .Für diejenigen, die noch nach einer Lösung suchen ...
Gehen Sie zu View / SQL Server Object Explorer und löschen Sie die Datenbank aus dem Unterknoten (localdb) \ v11.0!
Im Wesentlichen wird eine lokale Datenbank gespeichert, in der angegeben ist, wo sich die Dateien befinden sollen. Wenn Sie die Datenbankdateien löschen möchten, müssen Sie sie nicht manuell aus diesem Explorer-Dienstprogramm entfernen.
quelle
Ich habe zuerst die Lösung von JSobell ausprobiert, aber meine Datenbank dort nicht aufgelistet. Ich habe die Befehle von CodingWithSpike über die VS Developer-Eingabeaufforderung ausgeführt, aber das hat auch nicht funktioniert. Schließlich habe ich die gleichen Befehle von CodingWithSpike über die Package Manager-Konsole ausgeführt, und das hat funktioniert.
quelle
In Ordung.
Meine Lösung war einfach, ich habe den lokalen Server verwendet:
Ich habe das
DataSource
Attribut in der Verbindungszeichenfolge geändert von:Zu:
Eine andere Lösung besteht darin, sich über SQL Management Studio bei LocalDb anzumelden und zu versuchen, diese Datenbank zu löschen:
Bei mir hat es jedoch nicht funktioniert. Wenn ich versuche, es zu löschen, wird "TITEL: Microsoft SQL Server Management Studio" angezeigt
Wenn ich versuche, es zu trennen, wird die Datenbank nicht in der Liste zur Auswahl der Trennung angezeigt. "Offline schalten" führt mich auch zu dem obigen Fehler.
Was mich zu der Annahme führt, dass dies ein solider Fehler in LocalDB ist.
quelle
Die einfachste Lösung besteht darin, einfach den Namen Ihrer Datenbank in der Verbindungszeichenfolge zu ändern. Weitere Lösungen finden Sie im Rowan Millers-Blog zum Löschen einer Datenbank aus Visual Studio 2012 . Wir hoffen, dieses Problem in einer zukünftigen Ausgabe beheben zu können.
quelle
Die beste und einfachste Antwort, die ich gerade gelöst habe. Verwenden Sie einfach Ihren SQL-Servernamen als Datenquelle. Der erste Katalog ist Ihr Datenbankname. Dann entfernen Sie die MDF-Zeile
quelle
In meinem Fall verwende ich Migrationen und in der Konfiguration habe ich einfach den Namen von dataContext und die dataContext-Klasse selbst geändert (nur umbenennen), dann erneut versucht und das hat geholfen
quelle
Für SQL 2014 folgen Sie bitte der von CodingWithSpike ausgewählten Antwort und diesem Kommentar
quelle
v11.0
bisProjectsV12
. Zumindest auf meiner Maschine :-).Ich hatte das gleiche Problem und löste es, indem ich den Ordner "DataDirectory" manuell auf einen anderen Ordner in meinen App-Binärdateien legte.
Ich habe diese Zeile in die Global.asax Application_Start-Methode eingefügt:
Meine Verbindungszeichenfolge ist derzeit auf Folgendes eingestellt:
quelle
DataDirectory
dieApp_Data
Standardeinstellung bereits auf "Lokal" gesetzt ist, führt Ihr Code nichts aus, sofern dies nicht zuvor explizit geändert wurde.Ich konnte das Problem beheben, indem ich den Datenbanknamen in meiner Verbindungszeichenfolge umbenannte. Von der Standard-Aspnet- {-Nummer} in einen einfachen Namen funktionierte es.
quelle
Stellen Sie mit SQL Server Management Studio eine Verbindung zu (LocalDb) \ v11.0 her, löschen Sie die Datenbank und führen Sie dann eine Update-Datenbank in der Paketmanager-Konsole durch.
quelle
Ich hatte das gleiche Problem. Ich habe die folgenden Befehle in der Paketmanager-Konsole ausgeführt und das Problem behoben
quelle