質問

実際のデータベース接続文字列を宣言することなく、データベーススクリプトを生成したいと思います。

今のところこれを行うには、このように流fluent nhibernateで生成されたナベナート構成で(私のisessionFactory作成方法中)に、Nhibernate Exportschemaベースを使用します。

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は、データベース作成のために適切なSQL方言を取得するために必要なFluentnhibernate IpersistenceConfigurerです。

工場が既存のデータベースで作成されると、すべてが正常に機能します。しかし、私がやりたいのは、シーンの背後にある実際のデータベースなしで、選択したデータベースエンジンにnhibernate構成オブジェクトを作成することです...そして、私はこれを行うことができません。

誰かがいくつかのアイデアを持っているなら。

役に立ちましたか?

解決

使用してみてください:

.Create(false, false);

代わりに

.Execute(false, false, false); 

ConnectionStringプロパティをIpersistenceConfigurer(FluentDatabaseProvider)に追加しないでください。

他のヒント

これが私が使用したものです。私の間違いは、データベースに接続しようとするBuildSessionFactoryを呼び出すことでした。

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

        new SchemaExport(config.BuildConfiguration())
                .SetOutputFile(filedestination)
                .Create(false, false);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top