Ich möchte EF-Migrationen verwenden und muss daher Update-Datenbank verwenden. Da ich einige .mdf-Dateien im Hauptordner des Projekts verwende, die auch beim Debuggen verwendet werden sollen, habe ich ein paar ConnectionStrings
in App.config
die ich mit EF benutze.Updata-Database -ConnectionStringName mit modifiziertem | DataDirectory |
Eine Probe ConnectionString
:
<add name="DataContext"
providerName="System.Data.SqlClient"
connectionString="Data Source=(LocalDB)\mssqllocaldb;Database=Database;Integrated Security=True;AttachDbFilename=|DataDirectory|\Database.mdf"/>
Denn während |DataDirectory|
Debuggen Project-Root\bin\Debug
ist, schrieb ich eine Funktion, die |DataDirectory|
-Project-Root\app_data
ändert:
#if DEBUG
string path = Directory.GetParent(Environment.CurrentDirectory).Parent?.FullName + "\\app_data";
AppDomain.CurrentDomain.SetData("DataDirectory", path);
#endif
Das Problem ist, dass |DataDirectory|
nicht aktualisiert, wenn ich rufe Update-Database
und kann daher die .mdf-Datei nicht finden.
Ich fand eine very similar question ohne Antworten/Lösungen, aber es schien nicht so viel Aufmerksamkeit zu bekommen.
Gibt es also einen sauberen Weg, dies oder einen besseren zu tun, um dies zu tun? Ich brauche das Projekt einfach zu portieren, was bedeutet, dass ich in der Lage sein muss, einfach den Ordner zu kopieren und eine andere VS-Instanz ausführen zu lassen.
An diesem Punkt versuche ich noch herum, aber das wird schließlich ein Web-Projekt sein. Ich wusste nicht, dass '| DataDirectory |' nur für diese gedacht war. Aber ich verstehe richtig, dass ein Web-Projekt nicht unter "Project-Root \ bin \ Debug" laufen würde, ja? –
Web-Projekte unterstützen die | DataDirectoy | "out-of-the-box" mit dem Ordner 'App_Data', während andere Projekte etwas manövriert werden müssen (wie bei' AppDomain'). Soweit ich mich erinnere, laufen noch einige Teile einer Web-App von den 'bin \ [debug | release]' fodlern. Sie können hier mehr auf dem 'App_Data' Ordner lesen: https://msdn.microsoft.com/en-us/library/aa478948.aspx Schauen Sie einfach nach„App_Data“auf dieser Seite. –