28

Nei progetti EF, esiste una procedura consigliata per impostare AutomaticMigrationsEnabled?AutomaticMigrationsEnabled false o true?

Più dichiarazione:

Nella nostra squadra dopo la modifica di un modello che di solito corre "add-migrazione" e "update-databse" comandi nella console di Package Manager. Questo errore si solleva quando altri sviluppatori eseguire il progetto:

"non può cadere database perché è in uso"

Ogni volta che questo accada il primo modificatore dovrebbero Check In tutto il progetto e gli altri devono GET modificato oggetti. In molti casi non vogliamo controllare il modello e la migrazione già creati!

Questa situazione è fastidiosa, esistono soluzioni per questo tipo di problemi. grazie in anticipo.

risposta

41

Le migrazioni automatiche fanno tutta la magia per te ma non consentono il controllo delle versioni rigoroso (non hai una migrazione fissa speciale per ogni versione). Senza il rigoroso controllo delle versioni, non è possibile tracciare la versione del database e non è possibile eseguire aggiornamenti espliciti (non è possibile eseguire downgrade).

Se non si prevede di utilizzare il controllo delle versioni in cui è necessario conoscere la versione del database e se non si prevede di utilizzare il downgrade è sufficiente utilizzare la migrazione automatica.

"Impossibile eliminare database perché è in uso"

Sembra che si sta lavorando sul database condiviso = tappo di spettacolo. Ogni sviluppatore dovrebbe utilizzare il proprio database.

ma non si desidera verificare il modello e la migrazione già creata!

Questa è una best practice e se si desidera continuare con le migrazioni basate su codice, è necessario seguirla. Btw. esiste una pratica chiamata "integrazione continua": in un'integrazione continua è necessario ottenere immediatamente dopo che il commit è stato creato correttamente e superato i test.

+0

grazie. Sì, stiamo lavorando su un DB condiviso. Puoi dirci come possiamo iniziare ad usare i nostri database (testo, articolo, libri, ...QUALSIASI consiglio sarà molto apprezzato!) –

+4

Che consiglio stai cercando? Basta installare localmente il server database o utilizzare DB per sviluppatore su server condiviso. Nel primo caso è sufficiente cambiare 'Data Source' nella stringa di connessione sulla macchina locale e ogni sviluppatore avrà il proprio database con lo stesso nome. Il caso successivo richiede una stringa di connessione per sviluppatore, quindi dovrai assicurarti che alcuni criteri di check-in evitino di archiviare la stringa di connessione specifica per lo sviluppatore nel controllo del codice sorgente. –

+0

quindi non abbiamo bisogno di alcun database condiviso, OK! Ho impostato il ** Data Source = (local) ** –

10

Da: http://msdn.microsoft.com/en-us/data/jj554735.aspx

Raccomandazione per team ambienti

È possibile intervallare le migrazioni automatiche e basati su codice, ma questo è non raccomandato in scenari di sviluppo della squadra. Se fai parte di un gruppo di sviluppatori che utilizza il controllo del codice sorgente, devi utilizzare le migrazioni puramente automatiche o le migrazioni basate esclusivamente su codice. Date le limitazioni delle migrazioni automatiche, si consiglia di utilizzare le migrazioni basate su codice negli ambienti di team.

Problemi correlati