2012-06-26 9 views
12

Ogni volta che trascino una tabella modificata nel mio dbml, VS2010 mi chiede di aggiornare la stringa di connessione anche se ho creato una connessione dati con l'esatto stesse informazioni Ogni volta che succede questo cambia la mia stringa di connessione in "DataSourceConnectionString" e devo eliminarlo da 5 file diversi e sostituirlo con il nome della stringa di connessione che stavo usando in precedenza in modo da non rovinare tutti gli altri usando il file attraverso controllo della fonte. Qualche idea?Interrompi LINQ to SQL dbml dall'aggiornamento della stringa di connessione quando trascino le tabelle nel file dbml

risposta

17

Ho scoperto un'altra via dopo aver armeggiato con le risposte ad alcuni problemi un po 'correlati.

Per risolvere il problema che stavo avendo bisogno di cancellare la connessione dati che ho creato per connettermi al mio database dalla finestra del server explorer in VS2010. È quindi necessario aprire il designer .dbml e fare clic con il tasto destro del mouse nello spazio bianco e selezionare Proprietà. Si aprirà una finestra delle proprietà e ci sarà una sezione "Connessione", fare clic sulla piccola freccia per aprirla. Se si fa clic sulla riga della stringa di connessione, verrà visualizzato un pulsante con punti (...) su di esso. Quando fai clic su questo pulsante si aprirà una finestra Proprietà connessione. Questa finestra avrà già tutte le stesse proprietà di connessione già presenti nel tuo .dbml. Tutto quello che devi fare è cliccare su "OK" e creerà automaticamente una connessione dati per te nel server explorer che non ti permetterà di aggiungere una nuova stringa di connessione al file .dbml quando trascini un nuovo oggetto su di esso!

Yay! Non è più necessario eliminare stringhe di connessione aggiuntive ogni volta che aggiorno! : D

+0

Questo è così strano, ma grazie mille. Odio che MS abbia smesso di lavorare su LINQ to SQL. È molto lavoro per ricostruire tutto con Entity Framework. – Olaj

+0

Sì! Funziona. ma mi chiedo come ?! come funziona in questo ?! – Mohammadreza

+0

grazie. @Stuck yes this is strange – Mohammadreza

2

Quando si crea un'istanza di DataContext, utilizzare l'overload che consente di specificare la stringa di connessione. Questo sovrascriverà tutti i valori che sono stati inseriti dal Designer. Per esempio, invece di appena:

DataClasses1DataContext db = new DataClasses1DataContext(); 

uso:

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

o

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

Spero che questo è quello che stai cercando.

+0

Non ho pensato di farlo. Sarebbe stata una seccatura scrivere un milione di volte dal momento che ho classi statiche che chiamo che richiedono un'istanza di DataContext. In realtà l'avevo capito ieri, ma ho avuto il problema per mesi quindi ho voluto postarlo qui per altre persone. Grazie per la risposta –

+0

Sembra che VS 2012 abbia finalmente ottenuto il risultato corretto senza cuocere la stringa di connessione in codice. In VS 2012, l'istanziazione del contesto di dati senza parametri chiamerà un costruttore che legge un valore da AppSettings in web.config. La chiave AppSettings utilizzata può essere modificata/impostata nella scheda Proprietà del file dbml. –

Problemi correlati