Heim >Backend-Entwicklung >C++ >Wie lege ich einen relativen Pfad für den Speicherort der SQL Express-Datenbank in C#-Komponententests fest?
Bestimmen des SQL Express-Datenbankspeicherorts mithilfe eines relativen Pfads in der Anwendungskonfiguration
In einem Unit-Test-Projekt für C#, in dem SQL Express-Datenbanken verwendet werden, wird es notwendig, dies zu tun Definieren Sie eine Verbindungszeichenfolge, die einen Pfad relativ zum Speicherort der Anwendung ermöglicht. Dies ist besser als die explizite Angabe des absoluten Pfads zur Datenbankdatei, wie zum Beispiel:
AttachDbFilename=C:\blah\blah\blah\yea\yea\yea\MyApplication\Databases\MyUnitTestDB.mdf
Zunächst wurde überlegt, ob |DataDirectory| könnten hierfür eingesetzt werden. Es wurde jedoch festgestellt, dass dies hauptsächlich auf Webanwendungen anwendbar ist und möglicherweise nicht gut mit dem gewünschten Konfigurationssetup zur Steuerung des Datenbankspeicherorts in der Anwendungskonfigurationsdatei übereinstimmt.
Um diese Herausforderung zu meistern, wurde ein Hybridansatz implementiert , wie in der bereitgestellten Lösung beschrieben:
app.config-Datei:
<add name="MyConnectionString" connectionString="Server=.\SQLExpress;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Database=MyDatabaseForTesting;Trusted_Connection=Yes;" />
Unit-Test Klasse:
[TestInitialize] public void TestInitialize() { AppDomain.CurrentDomain.SetData("DataDirectory", System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Databases")); // rest of initialize implementation ... }
Dieser Ansatz kombiniert die relative Pfaddefinition in der Verbindungszeichenfolge mit der Zuweisung der DataDirectory-Eigenschaft in der Unit-Test-Klasse und stellt so sicher, dass sich die Datenbankdatei relativ zur ausführbaren Datei der Anwendung befindet während Unit-Tests, während dennoch die Verwendung einer gehosteten SQL-Datenbank in Produktionsumgebungen möglich ist.
Das obige ist der detaillierte Inhalt vonWie lege ich einen relativen Pfad für den Speicherort der SQL Express-Datenbank in C#-Komponententests fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!