2010-05-06 7 views
5

Je souhaite générer un script de base de données sans déclarer de chaîne de connexion à la base de données.Fluent NHibernate ExportSchema sans chaîne de connexion

Pour ce faire, pour l'instant j'utilise des bases NHibernate ExportSchema sur une configuration NHibernate générée avec Fluent NHibernate cette façon (au cours de ma méthode de création 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 est un FluentNHibernate IPersistenceConfigurer qui est nécessaire pour obtenir une bonne dialecte SQL pour la création de base de données.

Lorsque l'usine est créée avec une base de données existante, tout fonctionne correctement. Mais ce que je veux faire est de créer un objet de configuration NHibernate sur un moteur de base de données sélectionné sans une vraie base de données derrière la scène ... Et je ne parviens pas à le faire.

Si quelqu'un a une idée.

+0

Avez-vous trouvé une réponse à cette question? J'ai la même exigence. – longday

Répondre

0

Essayez d'utiliser:

.Create(false, false); 

enplace de

.Execute(false, false, false); 

Ne pas ajouter la propriété ConnectionString à la IPersistenceConfigurer (fluentDatabaseProvider).

+0

Vous avez raison, cela fonctionne. Je vous remercie! – Vince

1

C'est ce que j'ai utilisé. Mon erreur appelait BuildSessionFactory qui essayait de se connecter à la base de données:

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

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