Wie kann ich LINQ to SQL verwenden eine Verbindungszeichenfolge, die zur Laufzeit geändert?
Ich experimentiere einige Schwierigkeiten zu verwenden Verbindungszeichenfolge Bauherren (ADO.NET) in LINQ to SQL. Lassen Sie mich Ihnen zeigen, Jungs, was ich versuche zu tun:
den app.config Datei:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="LoremIpsum"
connectionString="Data Source=SomeServer;Initial Catalog=SomeDB;User ID=joe;"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
und ein Ausschnitt des Formulars:
ConnectionStringSettings settings =
ConfigurationManager.ConnectionStrings["LoremIpsum"];
if (null != settings)
{
string connection = settings.ConnectionString;
SqlConnectionStringBuilder builder =
new SqlConnectionStringBuilder(connection);
//passwordTextBox being the control where joe the user actually
//enters his credentials
builder.Password = passwordTextBox.Text;
}
LINQTOSQLDataClassDataContext db = new LINQTOSQLDataClassDataContext();
//finally some rather anecdotic LINQ sentence here:
var foo = db.Table.Single(bar => bar.Table == whatever);
Auf der anderen Seite die überprüfung der Direktfenster:
?builder.ConnectionString
"Data Source=SomeServer;Initial Catalog=SomeDB;User ID=joe;Password=swordfish"
Bin ich immer eine exception: Fehler bei der Anmeldung für den Benutzer 'joe'. Irgendwelche Ideen? Vielen Dank im Voraus.
- Fehlt der code, der tatsächlich verwendet die neue connection-string? Auch, warum ist das ein wiki?
- Dies sollte nicht eine community-wiki.
- Vereinbart...perfekt, gute Frage.
- Ich bin traurig über das. Meine Antwort ist, gegeben, dass ich nicht Muttersprache) Englisch mag ich immer die Idee, dass andere Bearbeiten meine Fragen, so dass Sie zur Verbesserung der Qualität zum Wohle des ganzen stackoverflow-community, aber das ist wohl kein guter Grund. , Die being said, wie kann ich den Schalter wieder auf "normale Frage"?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint, wie Sie versuchen, ändern Sie die Verbindungszeichenfolge, die ist gespeichert in der app.config-Datei. Wenn Sie einen no-argument-Konstruktor für Ihre Daten, Kontext, liest, was konfiguriert wurde zur design-Zeit.
Versuchen, injizieren Sie Ihre geänderte Verbindungs-string in den Konstruktor der DataContext:
Du hast vergessen zu senden, in der Sie den connectionstring, um die DataContext-Konstruktor.
Beispiel:
Können Sie erzwingen, dass ein
DataContext
für die Verwendung eines bestimmten connection-string mitParameterlosen
DataContext
Konstruktor verwenden eine Verbindungszeichenfolge, die von derApp.config
- Datei zuerst, dann die Verbindungszeichenfolge festgelegt zur compile-Zeit.