2013-09-27 14 views
5

TL; DR esiste uno strumento per la gestione (migrazione automatica, esecuzione) delle migrazioni (utilizzando linguaggio nativo .NET) per NHibernate?Strumento di gestione della migrazione con codice in primis NHibernate come EntityFramework, Django-Sud

vengo dal Django sfondo che incoraggia a sviluppare Codice-First. C'è anche la biblioteca "standard industriale" de facto per le migrazioni, chiamata South. Il tipico flusso di lavoro per la modifica dello schema è il seguente:

  1. cambiamento il codice del modello (cioè, aggiungere/rimuovere/modificare classi e/o proprietà) [ovviamente, codice del modello è in lingua nativa - qui: python]
  2. esegue il comando schemamigration che auto-genera il codice di migrazione [il codice di migrazione è python] e lo scrive nella sottodirectory "migrations".
  3. se necessario, mettere a punto il codice generato automaticamente. l'auto-generatore è abbastanza intelligente, ma non abbastanza intelligente da gestire la ridenominazione delle colonne, ad esempio. comando migrate
  4. corsa, che guarda la directory "migrazioni" ed esegue tutte le migrazioni che non sono stati ancora eseguiti (questo è capito utilizzando la tabella storia di migrazione)

questo è molto conveniente non solo per lo sviluppo (anche SCRUM dove le cose cambiano così velocemente) ma anche per l'aggiornamento della produzione - assicuratevi solo di mantenere separate le migrazioni su macchine-dev e server di produzione. È anche abbastanza sicuro per la produzione, dal momento che è possibile rivedere e modificare facoltativamente la migrazione prima di applicarla.

Durante la valutazione degli ORM per .NET, ho provato Entity Framework 5 che, come ho scoperto, ha funzionalità molto simili a quella di Django-South. C'è un comando della Console di gestione pacchetti per la creazione del codice di migrazione che potrebbe essere modificato prima dell'esecuzione, c'è un comando separato che esegue tutte le migrazioni non ancora eseguite e le contrassegna come eseguite nella cronologia delle migrazioni.

C'è qualche strumento come questo per NHibernate?

Sono a conoscenza della funzionalità SchemaUpdate, ma AFAIK aggiorna solo tutte le cose che devono essere aggiornate in un unico passaggio. Non lo userei in produzione, né durante lo sviluppo in cui la perdita di dati non è un disastro, ma ancora un po 'di dolore. Sono anche consapevole che SchemaUpdate potrebbe essere usato per esportare le istruzioni SQL in un file invece di eseguirle, ma non è così conveniente in quanto non c'è auto-gestione della migrazione della cronologia. Inoltre, è necessario scrivere SQL a mano;)

risposta

3

Non so se questo risponde veramente alla tua domanda ma per automatizzare le modifiche dello schema e aggiornare i tuoi mapping o anche progettare i tuoi mapping, è una buona idea usare gli strumenti per quello . Soprattutto se si dispone di un modello di database/dominio molto grande.

sto attualmente lavorando con il entity developer from devart.

Abbiamo confrontato più strumenti simili che sono là fuori, ma questo in realtà fa un salto. Ha così tante caratteristiche e fornisce anche la funzione per aggiungere modelli T4 personalizzato per generare quello che volete dal vostro modelli e anche aggiungere attributi personalizzati al progettista modello che poi può essere utilizzato all'interno della parte generatore di codice ...

Puoi anche rinominare le tue entità/proprietà in qualcosa di più leggibile manualmente e lo strumento lo preserverà anche dopo gli aggiornamenti dallo schema del database ...

E naturalmente supporta sia, modello o database di primo approccio ...

È possibile scaricare una versione di prova di causa di capire se questo potrebbe soddisfare le vostre esigenze ...

0

strumento come LLBLGen può aiutare qui .. LLBLGen Pro è una soluzione di accesso ai dati. È possibile utilizzare LLBLGen Pro Designer per creare il modello entità/dominio, definire i mapping e generare codice sorgente per uno dei quattro framework di mappatura O/R supportati: Entity Framework, LLBLGen Pro Runtime Framework, NHibernate e Linq to SQL.

Problemi correlati