2015-02-07 179 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。

相关问题