Ich habe eine dienstbasierte Datenbank und die Standardverbindungszeichenfolge lautet

@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\James\OneDrive\Miller Veneers\Program\Current\HandHeld\SQLLibrary\MyDatabase.mdf;Integrated Security=True";

Was funktioniert. Mein Problem ist, dass es nicht mehr funktioniert, wenn ich es in eine Dynamik umwandle, damit ich es auf einem anderen Computer verwenden kann.

Ich habe
versucht

@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" +
                   (System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) +
                    @"\MyDatabase.mdf;Integrated Security = True;");


und

@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=/MyDatabase.mdf;Integrated Security = True;


vielen Dank!

0
JamTay317 4 Jän. 2016 im 19:26

2 Antworten

Beste Antwort

Ihre beiden Beispiele sind etwas falsch.

Ihr zweiter Versuch geht vermutlich wegen des Schrägstrichs (/) anstelle des Backslash () schief.

Darüber hinaus denke ich, dass Ihr Weg zu falschen Ergebnissen führen kann. Wenn sich Ihr Code in einer DLL befindet, die sich im Assemblycache befindet, erhalten Sie einen Pfad zum Assemblycache und nicht den Speicherort Ihrer Anwendung. Vielleicht sollten Sie GetEntryAssembly in Betracht ziehen.

Versuchen Sie, den dynamischen Pfad mit dem Dateinamen mit Path.Combine(...) zu kombinieren.

string connectionString = 
    @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" +
    System.IO.Path.Combine(
        System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().GetName().CodeBase), 
        "MyDatabase.mdf") + 
    @";Integrated Security = True;"
1
Martin Mulder 4 Jän. 2016 im 16:48

Ich würde vorschlagen, es in der Konfigurationsdatei zu speichern und dann den Benutzernamen aus der Konfiguration zu ändern, wenn Sie den DB-Pfad ändern möchten

0
Salah Alshaal 4 Jän. 2016 im 16:31