È Entity Framework Code Prima un po 'insignificante / inutile nella produzione e quale è una buona strategia EF per la produzione?

29

Ho programmato di recente con Entity Framework 4.1 Code First e lo sto amando per lo sviluppo, ma con solo un piano finale e un elenco di funzionalità in rapida evoluzione, sto costantemente modificando Class / Database per soddisfare le esigenze delle applicazioni.

In fase di sviluppo, non ci sono dati in tempo reale e posso facilmente cancellare l'intero database in modo che venga ricreato con il nuovo schema, ovviamente, quando è in diretta, è molto brutto!

Le uniche soluzioni che riesco a vedere sono la possibilità di rilasciare la tabella dei metadati e di mantenere manualmente il database in sincronia o fondamentalmente di eliminare e resettare.

Personalmente preferisco il primo metodo perché penso che sarà molto più facile aggiungere una colonna / tabella che ricreare e migrare i dati, ma, a meno che non mi sia sfuggito qualcosa, questo si sta completamente spostando da Code First.

Quindi la domanda è davvero, Code First riguarda solo lo sviluppo iniziale e quale è una buona strategia per la gestione di EF per un ambiente di produzione?

    
posta wilhil 13.05.2011 - 13:06
fonte

3 risposte

15

La mia opinione è che la creazione automatica di database in primo luogo è solo per lo sviluppo. Ho risposto a domande simili su Stack Overflow dove ho descritto sia come aggiornare il database sia perché la funzionalità automatica non è buona in produzione:

L'aggiornamento del database è un'attività semi-manuale. Non ci dovrebbe essere alcuna magia automatica non testata - inoltre EF 4.1 attualmente non ha alcuna magia disponibile (c'è solo qualche presentazione sulle funzionalità su cui lavora il team di ADO.NET).

Puoi anche controllare questa domanda per capire meglio come vengono aggiornati i siti web.

    
risposta data 13.05.2011 - 13:49
fonte
5

Gestisci script di aggiornamento .

Nel database stesso, mantieni una tabella in cui è conservato un record con la versione dello schema.

All'avvio dell'applicazione, rileva la versione rispetto alla versione che si suppone sia utilizzata dai binari. Se differisce, esegue (o chiede all'utente) gli script di aggiornamento.

Non dimenticare di eseguire prima il backup del database.

    
risposta data 13.05.2011 - 13:49
fonte
2

La domanda è in qualche modo errata in quanto rende le connessioni tra il modello di programmazione e l'ambiente di runtime in cui non ce n'è.

Il codice innanzitutto è principalmente un driver di velocità di sviluppo e non è realmente connesso al sistema di runtime.

In produzione avrai un'impostazione di configurazione che nega al runtime la possibilità di eliminare / aggiornare il modello db.

    
risposta data 12.01.2012 - 16:55
fonte

Leggi altre domande sui tag