Frage

Ich möchte eine Datenbank-Skript generieren, ohne erklärt eine aktuelle Datenbank-Verbindungszeichenfolge mit.

Um dies zu tun, jetzt verwende ich NHibernate ExportSchema basiert auf einer NHibernate-Konfiguration mit Fluent NHibernate auf diese Weise erzeugt (während meiner ISessionFactory Erstellungsmethode):

FluentConfiguration configuration = Fluently.Configure();               
//Mapping conf ...
configuration.Database(fluentDatabaseProvider);
this.nhibernateConfiguration = configuration.BuildConfiguration();
returnSF = configuration.BuildSessionFactory();     

//Later
new SchemaExport(this.nhibernateConfiguration)              
                .SetOutputFile(filePath)
                .Execute(false, false, false);      

fluentDatabaseProvider ist ein FluentNHibernate IPersistenceConfigurer, die benötigt wird für die Datenbankerstellung richtigen SQL-Dialekt zu erhalten.

Wenn Fabrik mit einer vorhandenen Datenbank erstellt wird, funktioniert alles einwandfrei. Aber was ich will zu tun ist, ein NHibernate Konfigurationsobjekt auf einem ausgewählten Datenbank-Engine ohne eine echte Datenbank hinter der Szene zu schaffen ... und ich sich nicht schaffen, dies zu tun.

Wenn jemand hat eine Idee.

War es hilfreich?

Lösung

Versuchen Sie es mit:

.Create(false, false);

Inplace von

.Execute(false, false, false); 

Do not fügen Sie die Connectionstring-Eigenschaft auf den IPersistenceConfigurer (fluentDatabaseProvider).

Andere Tipps

Dies ist, was ich verwenden. Mein Fehler ruft BuildSessionFactory, die mit der Datenbank zu verbinden versucht:

        var config = Fluently.Configure()
          .Database(MsSqlConfiguration.MsSql2008)
          .Mappings(m =>
            m.FluentMappings.AddFromAssemblyOf<SessionManager>());

        new SchemaExport(config.BuildConfiguration())
                .SetOutputFile(filedestination)
                .Create(false, false);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top