Ho utilizzato Entity Framework 4.3 su un database esistente e ho un paio di scenari che sto cercando di soddisfare.Il modo migliore per eseguire l'inizializzazione dei dati in Entity Framework 4.3
In primo luogo, se elimino il mio database vorrei ricrearlo da zero - Ho usato con successo un inizializzatore del database CreateDatabaseIfNotExists per questo.
In secondo luogo, se aggiorno il mio modello e il database esiste già vorrei che il database venisse aggiornato automaticamente - Ho utilizzato con successo Entity Framework 4.3 Migrations per questo.
Quindi ecco la mia domanda. Suppongo di aggiungere una nuova tabella al mio modello che richiede alcuni dati di riferimento, quale è il modo migliore per garantire che questi dati vengano creati sia quando viene eseguito l'intialiser del database sia quando viene eseguita la migrazione. Il mio desiderio è che i dati vengano creati quando creo il db da zero e anche quando il database viene aggiornato come risultato di una migrazione in esecuzione.
In alcuni esempi di migrazioni EF ho visto persone utilizzare la funzione SQL() nel metodo UP della migrazione per creare i dati seme ma, se possibile, preferirei utilizzare il contesto per creare i dati seme (come si vede nella maggior parte esempi di inizializzazione del database), poiché mi sembra strano che si utilizzi pure sql quando l'intera idea di EF lo sta allontanando. Ho provato a utilizzare il contesto nel metodo UP ma per qualche motivo non pensavo che esistesse una tabella creata nella migrazione quando ho provato ad aggiungere i dati seme direttamente sotto la chiamata per creare la tabella.
Ogni saggezza ha molto apprezzato.
È possibile creare un contesto nel metodo Su e utilizzare AddOrUpdate per inserire righe. Tuttavia, questo non sarà incluso nella transazione di migrazione, quindi può causare problemi. Inoltre non è garantito la compilazione in futuro quando il modello cambia. – Betty
Ho provato a creare un contesto nel metodo Su, ma ha generato un errore che diceva che la tabella non esisteva. Proverò SQL nel metodo "Su" invece. –
@Ladislav la tua conoscenza approfondita su EF continua a stupirmi, hai considerato di creare un libro sull'argomento e forse affrontare i comuni fraintendimenti che incontri qui? – kingdango