Свободный NHibernate ExportSchema без строки подключения - PullRequest
5 голосов
/ 06 мая 2010

Я хочу сгенерировать сценарий базы данных, не объявив фактическую строку подключения к базе данных.

Для этого сейчас я использую NHibernate ExportSchema на основе конфигурации NHibernate, созданной с помощью Fluent 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 на выбранном ядре базы данных без реальной базы данных за кулисами ... И мне не удается это сделать.

Если у кого-то есть идеи.

Ответы [ 2 ]

1 голос
/ 16 августа 2012

Это то, что я использовал. Моя ошибка была вызвана BuildSessionFactory, которая пытается подключиться к базе данных:

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

        new SchemaExport(config.BuildConfiguration())
                .SetOutputFile(filedestination)
                .Create(false, false);
0 голосов
/ 07 апреля 2011

Попробуйте использовать:

.Create(false, false);

вместо

.Execute(false, false, false); 

Не добавляйте свойство строки соединения в IPersistenceConfigurer (fluentDatabaseProvider).

...