2010-05-06 13 views
5

Quiero generar una secuencia de comandos de base de datos sin tener una cadena de conexión de base de datos real declarada.Fluido NHibernate ExportSchema sin cadena de conexión

para hacer esto por ahora el uso de bases de NHibernate ExportSchema en una configuración de NHibernate generado con Fluido NHibernate esta manera (durante mi método de creación 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 es un IPersistenceConfigurer FluentNHibernate que se necesita para obtener adecuada dialecto sql para la creación de la base de datos.

Cuando se crea fábrica con una base de datos existente, todo funciona bien. Pero lo que quiero hacer es crear un objeto NHibernate Configuration en un motor de base de datos seleccionado sin una base de datos real detrás de la escena ... Y no logro hacerlo.

Si alguien tiene alguna idea.

+0

¿Encontró una respuesta a esto? Tengo el mismo requisito. – longday

Respuesta

0

Trate de usar:

.Create(false, false); 

inplace de

.Execute(false, false, false); 

No añade la propiedad ConnectionString a la IPersistenceConfigurer (fluentDatabaseProvider).

+0

Tienes razón, está funcionando. ¡Gracias! – Vince

1

Esto es lo que he usado. Mi error fue llamar a BuildSessionFactory que intenta conectarse a la base de datos:

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

     new SchemaExport(config.BuildConfiguration()) 
       .SetOutputFile(filedestination) 
       .Create(false, false); 
Cuestiones relacionadas