NHibernate - создать скрипт обновления из другого проекта - PullRequest
0 голосов
/ 05 мая 2011

Я пытаюсь сгенерировать скрипт обновления из моих моделей и отображений NHibernate, чтобы я мог поместить скрипт обновления в дельта-скрипт и разрешить создание и обновление моей базы данных из nant.

Я могу получить сгенерированный скрипт обновления, используя следующий метод:

private static IList<string> GetUpdateScript(Configuration configuration, string dbConnectionString)
        {
            var dialect = Dialect.GetDialect(configuration.Properties);
            using (var connection = new SqlConnection(dbConnectionString))
            {
                connection.Open();
                return configuration.GenerateSchemaUpdateScript(dialect,
                                          new DatabaseMetadata(connection, dialect))
                                          .ToList();
            }
        }

Но тогда я хотел сделать это из проекта вне моего текущего проекта, и это то, что у меня возникают проблемы.

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

Есть идеи о том, как подойти к этой проблеме?

=============================================== ============================= ОК, вот обновление:

Я создал проект на github, если вы хотите посмотреть: https://github.com/LouisSayers/NHibernateExample

В проекте есть Project.cs в проекте TheProject, который является рабочим примером, а в NHibernateUpdateScriptGenerator есть Program.cs, который является битом с ошибкой.

Проблема теперь в том, что когда я вызываю Configure из объекта Configuration, nhibernate жалуется на то, что диалект не найден, однако у меня есть диалект, определенный в моем hibernate.cfg.xml:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="proxyfactory.factory_class">
      NHibernate.ByteCode.Castle.ProxyFactoryFactory,
      NHibernate.ByteCode.Castle
    </property>
    <property name="dialect">
      NHibernate.Dialect.MsSql2005Dialect,
      NHibernate
    </property>
    <property name="connection.connection_string_name">db</property>
    <property name="adonet.batch_size">100</property>
    <mapping assembly="TheProject"/>
  </session-factory>
</hibernate-configuration>

Ответы [ 2 ]

0 голосов
/ 06 мая 2011

Явное утверждение о том, какой файл имеет конфигурацию, решило проблему - у меня сложилось впечатление, что файл hibernate.cfg.xml будет рассматриваться по умолчанию, но это не так ...Я добавил, чтобы решить проблему с диалектом: var nhConfig = configuration.Configure ("hibernate.cfg.xml");

Подробнее см. http://github.com/LouisSayers/NHibernateExample

0 голосов
/ 05 мая 2011

Вам необходимо иметь файл hibernate.cfg.xml в каждом проекте, который может быть выполнен.В качестве альтернативы вы можете использовать новую Loquacious конфигурацию в NH3.Или Свободная конфигурация FluentNhibernate .

...