我想生成一个数据库脚本,而无需声明实际的数据库连接字符串。

为此,我现在使用nhibernate Exportschema碱基上的NHIBERNATE配置,以这种方式(在我的IsessionFactory Creation方法)中生成的NHIBERNATE碱基:

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是一种流利的ipersistenceconfigurer,需要为数据库创建获得适当的SQL方言。

使用现有数据库创建工厂时,一切正常。但是,我要做的是在所选数据库引擎上创建一个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