2015-02-07 176 views
1

我有一個方法從其他方法調用。此方法創建一個配置對象和ISessionFactory:NHibernate,對象引用(配置)未設置爲對象的實例

private static ISessionFactory sessionFactory() 
    { 

     Configuration myConfig = null; 
     ISessionFactory mySessFac = null; 
     try 
     { 
      myConfig = new Configuration(); 
      if (myConfig != null) 
      { 
       myConfig.Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "hibernate.cfg.xml")); 
       mySessFac = myConfig.BuildSessionFactory(); 
      } 
     } 
     catch (Exception e) 
     { 
      throw; 
     } 

     return mySessFac; 

    } 

的問題是,我在myConfig.Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "hibernate.cfg.xml"));

得到一個錯誤的錯誤是:

對象引用未設置爲一個實例對象

即使這是一個直接的錯誤,我有困難解決它。 下面是一個使用上述方法的方法:

public static IList<Course> RetrieveAllCourses() 
    { 
     IList<Course> cList = null; 
     try 
     { 
      using (ISession mySess = sessionFactory().OpenSession()) 
      { 
       ICriteria criteria = mySess.CreateCriteria<Course>(); 
       cList = criteria.List<Course>(); 
      } 
     } 
     catch (Exception e) 
     { 
      throw; 
     } 
     return cList; 
    } 

的hibernate.cfg.xml設置爲嵌入式資源

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
    <property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property> 
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> 
    <property name="connection.connection_string">Data Source=Mnemonics;User ID=Mnmncs;Password=mnmncs;Initial Catalog=database-name;Integrated Security=true</property> 
    <property name="show_sql">true</property> 
    <mapping assembly="RManageSystemService"/> 
    </session-factory> 
</hibernate-configuration> 

和映射文件也被設置爲嵌入的資源:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
        assembly="RManageSystemService" 
        namespace="RManageSystemService.orm_rman_systm"> 
    <class name="Course" table="dbo.Courses" lazy="false"> 
    <id name="CCode" column="ccode"> 
     <generator class="identity"/> 
    </id> 
    <property name="CName" column="cname"/> 
    <property name="Credits" column="credits"/> 
    </class> 
</hibernate-mapping> 

那麼我的代碼有什麼問題?我希望得到一些幫助。

回答

1

問題是具有重複屬性映射的映射文件之一。這個錯誤被方法sessionFactory()中的try catch語句覆蓋,它只返回一個對象錯誤。

0

我認爲這個問題可能在路徑或XML結構中,但我對NHibernate框架沒有經驗,所以我不確定Configure()方法的funcionality。

相關問題