SQL Express-Verbindungszeichenfolge: Speicherort der MDF-Datei relativ zum Speicherort der Anwendung
Ich bin mit SQL-Express-Datenbanken als Teil eines unit-test-Projekt in c#. Meine Datenbanken befindet sich hier:
./Databases/MyUnitTestDB.mdf
Ich würde gerne einen relativen Pfad verwenden, oder die variable in der app.config
anstatt meine Verbindungszeichenfolge definiert als:
AttachDbFilename=C:\blah\blah\blah\yea\yea\yea\MyApplication\Databases\MyUnitTestDB.mdf
Habe ich gesehen, die Verwendung von |DataDirectory|
aber bin ich richtig im denken das ist nur für web-Anwendungen?
Ich möchte festlegen, diese in der Konfigurationsdatei der Anwendung, wie in der Produktion die Anwendung verwendet eine gehostete sql-Datenbank.
InformationsquelleAutor der Frage Adam Jenkin | 2010-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Danke an alle, ich habe eine Kombination deiner Antworten.
In meiner app.config-Datei my connection-string ist wie folgt definiert
In meinem unit-test-Klasse-I-festlegen der DataDirectory-Eigenschaft mit dem folgenden
InformationsquelleAutor der Antwort Adam Jenkin
Ja, |DataDirectory| Web-Anwendung wählen Sie das App_Data-Verzeichnis der web-Anwendung.
In einem nicht-web-Anwendung, je nachdem .NET Framework, es verwendet werden könnte, und auch geändert werden mit AppDomain.SetData
Aber Sie haben andere zwei posiblities um die Verbindung zu erstellen:
1.- Verwenden Sie einen relativen Pfad:
2.- Holen Sie sich den Pfad der Anwendung und fügen Sie die Zeichenfolge.
In c# - Windows-Anwendung, die Sie verwenden können, Anwendung.StartupPath
Je nach Anwendung Typ oder Modus starten Sie haben unterschiedliche Eigenschaften. Ex:
Anwendung.ExecutablePath -- start Weg einen Namen der exe-Anwendung, die Statistiken der Anwendung
Aber um die Anwendung, die Sie brauchen, um System.Windows.Formen, ist nicht im Lieferumfang enthalten z.B. in Konsole-Anwendungen.
System.IO.Pfad.GetDirectoryName(
System.Reflexion.Montage.GetExecutingAssembly().GetName().CodeBase) -- Dieser wird der Pfad der aktuellen Baugruppe "dll,exe,..." Ist nicht betroffen durch die Art der Bewerbung, den Pfad ändert,... Immer wieder das Verzeichnis, wenn Sie die Assembly befindet.
Umgebung.CurrentDirectory -- das aktuelle Verzeichnis. Dies kann geändert werden, zum Beispiel, wenn Sie navigieren in Ordnern.
Finden Sie mehr über die verschiedenen connection string Optionen hier
http://www.connectionstrings.com/sql-server-2005
InformationsquelleAutor der Antwort Dubas
Habe ich einen ganzen Tag verbracht zu googeln, diese Arbeit durch und schließlich eine Ahnung von diese
Hier ist meine Lösung:
1. Verwenden der |DataDirectory| - in connection-string
2.Set DataDirectory in ClassInitialize
InformationsquelleAutor der Antwort nonetaku
Ich bin erstellen einer einfachen Windows Forms-Anwendung mit VS2010 C#3.0. Auch mit SQL Express 2008 RC2.
Ich bin in der Lage zu verwenden:
|DataDirectory|MyDb.mdf
in der Verbindungszeichenfolge allein ohne änderung, nichts anderes. Die|DataDirectory|
Punkte, um die Lage von meine .exe-Datei.Ich denke, dass dies die erste Sache, die Sie alle würden versuchen, so dass ist, warum ich bin Angabe meine VS und SQL-version. Oder vielleicht ist es neu in C#3.0.
Meine komplette Verbindungszeichenfolge:
Hinweis, ich habe soeben einen "App_Data" Ordner auf meine Bewerbung, weil ich bin verwendet, um die Db in diesem Ordner, wird der Ordner nicht erkannt und von VS.
InformationsquelleAutor der Antwort Wasted_Coder
Ich nicht habe Visual Studio hier, aber was ist mit:
InformationsquelleAutor der Antwort João Pereira
Dynamischen Pfad in der SQL Server-Verbindung
InformationsquelleAutor der Antwort Mohit Kotak
Habe ich Folgendes. Hoffentlich hilft es jemanden.
InformationsquelleAutor der Antwort cgatian