2012-06-26 5 views
12

Jedes Mal, wenn ich eine geänderte Tabelle in meine dbml ziehe, möchte VS2010 die Verbindungszeichenfolge aktualisieren, obwohl ich eine Datenverbindung mit dem exact erstellt habe gleiche Information. Jedes Mal, wenn dies passiert, ändert sich meine Verbindungszeichenfolge in "DataSourceConnectionString" und ich muss sie aus 5 verschiedenen Dateien löschen und durch den Namen der Verbindungszeichenfolge ersetzen, die ich zuvor verwendet habe, damit sie nicht alle anderen mit der Datei durcheinander bringt Quellcodeverwaltung. Irgendwelche Ideen?Stoppt LINQ to SQL dbml beim Aktualisieren der Verbindungszeichenfolge beim Ziehen von Tabellen in die dbml-Datei

Antwort

17

Ich fand einen anderen weg, nachdem ich mit Antworten auf einige verwandte Themen bastelte.

Um das Problem zu lösen, musste ich die Datenverbindung löschen, die ich erstellt habe, um eine Verbindung zu meiner Datenbank von Ihrem Server-Explorer-Fenster in VS2010 herzustellen. Sie müssen dann den .dbml-Designer öffnen und mit der rechten Maustaste in den Leerraum klicken und Eigenschaften auswählen. Ein Eigenschaftenfenster wird geöffnet und es wird ein Abschnitt "Verbindung" angezeigt. Klicken Sie auf den kleinen Pfeil, um ihn zu öffnen. Wenn Sie auf die Verbindungszeichenfolge klicken, erscheint eine Schaltfläche mit Punkten (...) darauf. Wenn Sie auf diese Schaltfläche klicken, wird ein Fenster mit den Verbindungseigenschaften geöffnet. Dieses Fenster enthält bereits alle Verbindungseigenschaften, die Ihre .dbml-Datei bereits besitzt. Sie müssen lediglich auf "OK" klicken und es wird automatisch eine Datenverbindung für Sie im Server-Explorer erstellt, die nicht dazu führt, dass Sie der .dbml eine neue Verbindungszeichenfolge hinzufügen, wenn Sie ein neues Objekt darauf ziehen!

Yay! Kein weiteres Löschen zusätzlicher Verbindungszeichenfolgen bei jedem Update! : D

+0

Das ist so seltsam, aber vielen Dank. Ich hasse es, dass MS gerade nicht mehr an LINQ to SQL arbeitet. Es ist viel zu viel Arbeit, um alles mit Entity Framework neu zu erstellen. – Olaj

+0

Ja! Es klappt. aber ich frage mich, wie ?! wie geht es dabei ?! – Mohammadreza

+0

danke. @Stuck ja das ist seltsam – Mohammadreza

2

Wenn Sie Ihren DataContext instanziieren, verwenden Sie die Überladung, mit der Sie die Verbindungszeichenfolge angeben können. Dies überschreibt alle Werte, die vom Designer eingegeben wurden. statt nur Zum Beispiel:

DataClasses1DataContext db = new DataClasses1DataContext(); 

Verwendung:

DataClasses1DataContext db = new DataClasses1DataContext("..connection string.."); 

oder

DataClasses1DataContext db = new DataClasses1DataContext(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString); 

Hoffnung das ist, was Sie suchen.

+0

Ich dachte nicht, dies zu tun. Es wäre eine Mühsal gewesen, das millionenfach einzugeben, da ich statische Klassen habe, die ich anrufe, die einen DataContext benötigen, um instanziiert zu werden. Ich hatte es gestern herausgefunden, aber ich hatte das Problem seit Monaten, also wollte ich es hier für andere Leute veröffentlichen. Vielen Dank für die Antwort –

+0

Es scheint, dass VS 2012 hat es endlich richtig gemacht, indem Sie die Verbindungszeichenfolge in Code nicht backen. In VS 2012 ruft das Instanziieren des Datenkontexts ohne Parameter einen Konstruktor auf, der einen Wert aus AppSettings in web.config einliest. Der verwendete AppSettings-Schlüssel kann auf der Registerkarte Eigenschaften der dbml-Datei geändert/festgelegt werden. –