2011-01-09 98 views
0

我在設置NHibernate時遇到了一些麻煩,我不太確定問題到底是什麼。我試圖將一個域對象保存到數據庫(Oracle 10g XE)。但是,在嘗試創建ISessionFactory時出現TypeInitializationException。這裏是我的hibernate.cfg.xml是什麼樣子:NHibernate無法創建SessionFactory

<?xml version="1.0" encoding="utf-8"?> 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > 
    <session-factory name="MyProject.DataAccess"> 
     <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property> 
     <property name="connection.connection_string"> 
      User ID=myid;Password=mypassword;Data Source=localhost 
     </property> 
     <property name="show_sql">true</property> 
     <property name="dialect">NHibernate.Dialect.OracleDialect</property> 
     <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property> 
     <mapping resource="MyProject/Domain/User.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

我創建了我會用堅持域對象與數據庫的DAO。 DAO使用一個創建SessionFactory的HibernateUtil類。這兩個類都與Hibernate配置一起位於DataAccess命名空間中。這是發生異常的地方。這裏是該類:

public class HibernateUtil 
{ 
    private static ISessionFactory SessionFactory = BuildSessionFactory(); 

    private static ISessionFactory BuildSessionFactory() 
    { 
     try 
     { 
      // This seems to be where the problem occurs 
      return new Configuration().Configure().BuildSessionFactory(); 
     } 
     catch (TypeInitializationException ex) 
     { 
      Console.WriteLine("Initial SessionFactory creation failed." + ex); 
      throw new Exception("Unable to create SessionFactory."); 
     } 
    } 

    public static ISessionFactory GetSessionFactory() 
    { 
     return SessionFactory; 
    } 
} 

DataAccess命名空間引用NHibernate dll。這與我在Hibernate中使用的Java實際上是一樣的設置,所以我不完全確定我在這裏做錯了什麼。有任何想法嗎?

編輯

最裏面的例外是:

「找不到文件「C:\用戶\泰勒\文檔\ Visual Studio 2010的\項目\ MyProject的\ MyProject的\ ConsoleApplication \ BIN \調試\ hibernate.cfg.xml中」。」

ConsoleApplication包含創建User對象的入口點,並試圖用我的DAO持久化它。爲什麼在那裏尋找配置文件?實際的持久化發生在DataAccess中的DAO中。另外,當我將配置文件添加到ConsoleApplication時,它仍然沒有找到它。

+1

後異常的內容的文件夾這個問題將得到解決,請。 – Vadim 2011-01-09 01:00:09

+0

@Yads:我更新了我的帖子。 – 2011-01-09 07:26:21

回答

0

它正在尋找該目錄中的配置文件,因爲這是NHibernate查找配置文件的默認位置。請注意,這是一個目錄,它與命名空間無關。您需要將項目中hibernate.cfg.xml文件的屬性設置爲複製到輸出目錄。

0

我認爲,如果能在cfg.xml文件複製到包含NHibernate的裝配

相關問題