我想在没有声明实际数据库连接字符串的情况下生成数据库脚本。
要做到这一点,我现在使用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配置对象,而不需要在场景后面有真正的数据库...而且我无法做到这一点。
如果有人有想法的话。
答案 0 :(得分:1)
这就是我用的。我的错误是调用BuildSessionFactory尝试连接数据库:
var config = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008)
.Mappings(m =>
m.FluentMappings.AddFromAssemblyOf<SessionManager>());
new SchemaExport(config.BuildConfiguration())
.SetOutputFile(filedestination)
.Create(false, false);
答案 1 :(得分:0)
尝试使用:
.Create(false, false);
取代
.Execute(false, false, false);
不要将connectionstring属性添加到IPersistenceConfigurer(fluentDatabaseProvider)。