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

NHibernate-从不同的项目生成更新脚本,nhibernate,nant,Nhibernate,Nant,我试图从我的NHibernate模型和映射生成一个更新脚本,这样我就可以将更新脚本放入增量脚本中,并允许从nant创建和更新我的数据库 我可以使用以下方法获取生成的更新脚本: private static IList<string> GetUpdateScript(Configuration configuration, string dbConnectionString) { var dialect = Dialect.GetDialect(

我试图从我的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();
            }
        }
私有静态IList GetUpdateScript(配置,字符串dbConnectionString)
{
var-dialen=dialen.getdialen(配置.Properties);
使用(var connection=newsqlconnection(dbConnectionString))
{
connection.Open();
返回配置.GenerateSchemaUpdateScript(方言,
新数据库元数据(连接、方言))
.ToList();
}
}
但后来我想从我当前项目之外的一个项目中做这件事,这正是我所遇到的困难

我想问题在于从不同的项目中创建配置对象-也许我会对此进行研究-我可以想象现在查看NHibernate代码

关于如何解决这个问题有什么想法吗

============================================================================ 好的,这里有一个更新:

我已经在github上创建了一个项目,如果您想查看:

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

现在的问题是,当我从配置对象调用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>

NHibernate.ByteCode.Castle.proxyFactory,
NHibernate.ByteCode.Castle
NHibernate.dialogue.mssql2005dialogue,
亚硝酸铵
分贝
100

您需要在每个可以执行的项目中使用hibernate.cfg.xml。或者,您可以考虑在NH3中使用新的。或者。

明确指出哪个文件中有配置解决了这个问题-我的印象是默认情况下会看到“hibernate.cfg.xml”,但看起来不是这样。。。我添加了以下内容来解决方言问题:var nhConfig=configuration.Configure(“hibernate.cfg.xml”)

有关更多详细信息,请参阅