Come devo modificare una stringa di connessione di Entity Framework?


115

Di recente ho dovuto modificare il mio file app.config per modificare la stringa di connessione per un modello di dati ( .edmxfile) di Entity Framework . Ma mi piacerebbe sapere: esiste un modo per modificare la stringa di connessione EF utilizzando il designer?

La stringa di connessione originale viene generata automaticamente dalla procedura guidata Entity Data Model. La stringa di connessione quindi non può essere modificata: rimane disabilitata nella finestra delle proprietà del designer .edmx. Mi piace evitare di modificare XML manualmente se posso (in app.config), quindi mi chiedevo se esiste un modo per tornare alla schermata della procedura guidata originale per apportare modifiche alla stringa di connessione e lasciare che lo strumento modifichi il file app.config per me.

Risposte:


190

Se rimuovi la stringa di connessione dal app.configfile, la riesecuzione della procedura guidata del modello di dati dell'entità ti guiderà a costruire una nuova connessione.


17
Eccellente. Questa è esattamente la risposta che stavo cercando. Per sicurezza ho commentato la stringa esistente (invece di eliminarla), ho salvato le modifiche di app.config, ho fatto clic con il pulsante destro del mouse sul designer e ho scelto Aggiorna modello dal database. La procedura guidata quindi mi consente di includere le informazioni sensibili (uid e pwd) nella stringa di connessione. Grazie!
Sviluppatore:

5
Se stai facendo prima il modello, fai clic con il pulsante destro del mouse sul designer e fai clic su "Genera database dal modello"
Carl Onager,

2
Questo ha funzionato anche per me, tranne per il fatto che dovevo aggiornare il file App.config, quindi riavviare VS.NET 2012. Non stava rilevando che il file App.config fosse cambiato.
Garry English

2
Ho dovuto chiamare esplicitamente save sul file app.config affinché il designer riconoscesse che la stringa di connessione era stata eliminata.
Rossco

1
Un'alternativa al riavvio di VS consiste nel 1. commentare la stringa di connessione in app.config 2. ricostruire il progetto che contiene .edmx 3. fare clic con il pulsante destro del mouse sull'area di progettazione .edmx e aggiornare il modello dal database ... che dovrebbe portare nella procedura guidata della stringa di connessione.
RIanGillis

18

No, non puoi modificare la stringa di connessione nel designer. La stringa di connessione non fa parte del file EDMX, è solo un valore di riferimento dal file di configurazione e probabilmente per questo motivo è di sola lettura nella finestra delle proprietà.

La modifica del file di configurazione è un'attività comune perché a volte si desidera apportare modifiche senza ricostruire l'applicazione. Questo è il motivo per cui esistono i file di configurazione.


+1 per ricordare che: se lo mettono in un file di configurazione, significa che vogliono che tu sia in grado di cambiarlo. Ero principalmente preoccupato per il fatto che le mie modifiche potessero essere
ignorate

Dovresti andare a modificare la stringa di connessione nella configurazione dell'app del progetto a cui appartiene edmx. Non la configurazione dell'applicazione di primo livello (che viene utilizzata quando viene eseguita). o_0
akava

9

Normalmente si definiscono le stringhe di connessione in Web.config. Dopo aver generato edmx, la stringa di connessione verrà archiviata in App.Config. Se desideri modificare la stringa di connessione, vai su app.config e rimuovi tutte le stringhe di connessione. Ora vai su edmx, fai clic con il pulsante destro del mouse sull'area di progettazione, seleziona Aggiorna modello dal database , scegli la stringa di connessione dal menu a discesa, fai clic su Avanti , Aggiungi o Aggiorna (seleziona ciò che desideri) e termina.

Nella finestra di output mostrerà qualcosa del genere,

File di modello generato: UpostDataModel.edmx. Il caricamento dei metadati dal database ha richiesto 00: 00: 00.4258157. La generazione del modello ha richiesto 00: 00: 01.5623765. Aggiunta la stringa di connessione al file App.Config.


Sto riscontrando un problema simile, ma quando commento la stringa di connessione, aggiorno il modello, scelgo una nuova stringa di connessione, la mia classe context.cs all'interno del modello viene svuotata. Non sei sicuro del motivo per cui lo fa a meno che non riesca a generare la classe di contesto?
Bitshift

1
Non dovrebbe farlo. Potrebbe essere che il tuo strumento di creazione di modelli T4 sia danneggiato.
DanKodi

Sono d'accordo, "non dovrebbe". Tuttavia, ho perso il conto del numero di volte quando ho apportato più di poche modifiche non banali allo schema sottostante, che alla fine ho dovuto semplicemente spazzare via il modello e crearne uno nuovo. Forse con EF7 e la sua rimozione del file edmx potrebbe aiutare le cose. Ad ogni modo, è quello che ho fatto anche questa volta, ho solo evidenziato tutto nel modello, ho premuto Elimina e ho riportato quegli elementi.
Bitshift

2

Apri il file .edmx con qualsiasi editor di testo cambia lo Schema = "il tuo schema richiesto " e apri anche app.config / web.config , cambia l'ID utente e la password dalla stringa di connessione . hai fatto.


Sì, questo ha funzionato.
ggderas

1

Segui i passaggi successivi:

  1. Apri app.config e commenta la stringa di connessione (salva file)
  2. Apri edmx (vai alle proprietà, la stringa di connessione dovrebbe essere vuota), chiudi di nuovo il file edmx
  3. Apri app.config e rimuovi il commento dalla stringa di connessione (salva il file)
  4. Apri edmx, vai su proprietà, dovresti vedere la stringa di connessione aggiornata !!
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.