NHibernate - 从不同的项目生成更新脚本

时间:2011-05-05 14:21:30

标签: nhibernate nant

我正在尝试从我的NHibernate模型和映射生成更新脚本,以便我可以将更新脚本放入delta脚本中,并允许从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();
            }
        }

但后来我想从我当前项目之外的项目中做到这一点,这就是我遇到的麻烦。

我想问题是关于从另一个项目创建Configuration对象 - 也许我会研究这个 - 我可以想象现在查看NHibernate代码......

有关如何解决此问题的任何想法?

=============================================== ============================= 好的,这是一个更新:

如果你想看看我在github上创建了一个项目:https://github.com/LouisSayers/NHibernateExample

该项目在TheProject项目中有一个Program.cs,这是一个工作示例,NHibernateUpdateScriptGenerator有一个Program.cs,它是有错误的位。

现在的问题是,当我从Configuration对象调用Configure时,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 :(得分:0)

您需要在每个可以执行的项目中使用hibernate.cfg.xml。或者,您可以查看在NH3中使用新的Loquacious configuration。或FluentNhibernate's fluent configuration

答案 1 :(得分:0)

明确说出哪个文件配置在其中解决了问题 - 我的印象是默认情况下会查看'hibernate.cfg.xml',但它似乎不是这样......以下是什么我添加了用方言解决问题:var nhConfig = configuration.Configure(“hibernate.cfg.xml”);

有关详细信息,请参阅http://github.com/LouisSayers/NHibernateExample