5

我想在没有声明实际数据库连接字符串的情况下生成数据库脚本。

为此,我现在使用 NHibernate ExportSchema 基于使用 Fluent NHibernate 生成的 NHibernate 配置(在我的 ISessionFactory 创建方法期间):

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 是一个 FluentNHibernate IPersistenceConfigurer,它是获取用于创建数据库的正确 sql 方言所必需的。

当使用现有数据库创建工厂时,一切正常。但我想要做的是在选定的数据库引擎上创建一个 NHibernate 配置对象,而不需要在幕后使用真正的数据库......而且我无法做到这一点。

如果有人有一些想法。

4

2 回答 2

1

这是我用的。我的错误是调用 BuildSessionFactory 尝试连接到数据库:

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

        new SchemaExport(config.BuildConfiguration())
                .SetOutputFile(filedestination)
                .Create(false, false);
于 2012-08-16T12:26:41.040 回答
0

尝试使用:

.Create(false, false);

代替

.Execute(false, false, false); 

不要将 connectionstring 属性添加到 IPersistenceConfigurer (fluentDatabaseProvider)。

于 2011-04-06T20:29:11.770 回答