Domanda

Dove devo mettere il mio metodo di NHibernate SchemaExport e come devo chiamarla quando decido di ricreare il database?

Devo lasciare questo nel mio progetto di avvio (un progetto MVC asp.net)? Devo creare un progetto di console separata solo per l'esportazione il mio schema?

Credo che queste domande provengono tutte dal fatto che io non voglio lo schema di esportazione per l'esecuzione ogni volta che si avvia Web App.

Sto usando NHibernate fluente se questo fa la differenza.

È stato utile?

Soluzione

Vorrei fattore questo fuori in un assembly separato; È quindi possibile utilizzare questo da una varietà di luoghi (console app, messa a punto di test di integrazione, installazione, ecc).

Altri suggerimenti

Come idea: è possibile inserire in un ProjectInstaller che facoltativamente prende un argomento da riga di comando. Quindi non dovrebbe avere una console app in più solo per questo.

Personalmente io uso due prove (utilizzando NUnit in questo caso) per creare o aggiornare il database. In entrambi i casi, a generare solo la sceneggiatura, come voglio pieno controllo su quando il database viene creato o aggiornato.

    [Test]
    [Ignore]
    public void Create_Database_Schema_From_MappingFiles()
    {
        Configuration cfg = new Configuration();
        cfg.Configure();
        var schema = new SchemaExport(cfg);

        schema.Create(true, false);
    }

    [Test]
    [Ignore]
    public void Update_an_existing_database_schema()
    {
        Configuration cfg = new Configuration();
        cfg.Configure();
        var update = new SchemaUpdate(cfg);
        update.Execute(true, false);
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top