2011-05-05 76 views
0

我想從我的NHibernate模型和映射生成更新腳本,以便我可以將更新腳本放入增量腳本,並允許創建和更新我的數據庫從nant開始。NHibernate - 從不同的項目生成更新腳本

我可以通過以下方法生成更新腳本:

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上創建了一個項目if你想看看:https://github.com/LouisSayers/NHibernateExample

該項目在TheProject項目中有一個Program.cs,這是一個工作示例,NHibernateUpdateScriptGenerator有一個Program.cs,它是有錯誤的位。

現在的問題是,當我打電話配置從配置對象,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> 

回答

0

明確說明哪個文件中有配置解決了這個問題 - 我的印象是'hibernate.cfg.xml'在默認情況下會被查看,但看起來並不那麼......下面是我添加了什麼來解決方言問題:var nhConfig = configuration.Configure(「hibernate.cfg.xml」);

請參閱http://github.com/LouisSayers/NHibernateExample瞭解更多詳情