Ok, ho lottato con questo per un giorno all'altro, e qui è la soluzione per chi cerca la risposta ...
Io parto dal presupposto che la maggior parte persone che leggono questo post sono qui perché hanno un grande DbContext classe con molte proprietà di DbSet <> e richiede molto tempo per essere caricato. Probabilmente hai pensato a te stesso, ciao, che avrebbe senso, dovrei suddividere il contesto, dal momento che non userò tutti i dbset contemporaneamente, e caricherò solo un contesto "Parziale" basato sulla situazione in cui ho bisogno esso. Quindi li dividi, solo per scoprire che le migrazioni di Code First non supportano il tuo modo di pensare rivoluzionario.
Quindi il primo passaggio deve essere stato la suddivisione dei contesti, quindi è stata aggiunta la classe MigrationConfiguration per ciascuno dei nuovi contesti, sono state aggiunte le stringhe di connessione denominate esattamente come le nuove classi Context.
Quindi è provato in esecuzione i contesti di recente divisi uno per uno, facendo Add-migrazione context1 poi facendo Update-Database -Verbose ...
Tutto sembrava funzionare bene, ma poi ci si accorge che ogni successiva La migrazione ha eliminato tutte le tabelle dalla migrazione precedente e ha lasciato le tabelle solo dall'ultima migrazione.
Questo perché, il modello di migrazione corrente prevede Single DbContext per Database e deve essere una corrispondenza speculare.
Ciò che ho provato anche, e qualcuno ha suggerito di farlo, è creare un singolo SuperContext, che contiene tutti i set di Db. Crea una singola classe Migration Configuration ed eseguila. Lascia le tue classi Context parziali in posizione, e prova ad Istanziare e usarle. L'EF si lamenta che il modello di supporto è cambiato. Di nuovo, questo è perché l'EF confronta il tuo dbcontext parziale con la firma di contesto Tutto-Set che era rimasta dalla tua migrazione Super Contesto.
Questo è un grosso difetto a mio parere.
Nel mio caso, ho deciso che PERFORMANCE è più importante delle migrazioni. Quindi, quello che ho finito per fare, è dopo che ho corso nel contesto Super e ho avuto tutti i tavoli in atto, sono entrato nel database e ho eliminato manualmente la tabella _MigrationHistory.
Ora, posso creare un'istanza e utilizzare i miei contesti parziali senza che EF si lamenti. Non trova la tabella MigrationHistory e semplicemente si sposta, permettendomi di avere una vista "Parziale" del database.
Il compromesso ovviamente è che qualsiasi modifica al modello dovrà essere propagata manualmente al database, quindi fai attenzione.
Ha funzionato per me però.
Questa è una domanda molto interessante. Mi chiedo se il supporto contestuale multiplo fosse parte dei casi di utilizzo della migrazione. –
Dubito fortemente che più contesti possano funzionare con le migrazioni automatiche, è progettato per aggiornare il db in modo che assomigli al contesto, indipendentemente da cosa. Potresti avere più fortuna nello sviluppo dei plugin usando le migrazioni manuali, contro database separati per generare le migrazioni, quindi applicarli tutti allo stesso db. – Betty
Nel frattempo ho sbirciato negli assiemi EF 4.3 e dubito anche che il framework di migrazione possa far fronte a diversi contesti. Ma non c'è una ragione tecnica a cui possa pensare. Con un modello EDM sul posto si potrebbe diff contro il database trovare le tabelle delle tabelle esistenti creare o modificare e lasciare lo scenario di cancellazione da migrazioni manuali all'utente. –