2011-01-09 5 views
0

NHibernate를 설정하는 데 약간의 문제가있다. 문제가 정확히 무엇인지 확실하지 않다. 도메인 객체를 데이터베이스 (Oracle 10g XE)에 저장하려고합니다. 그러나 ISessionFactory를 만들려고 할 때 TypeInitializationException이 발생합니다.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를 만들어 : 여기처럼 내 hibernate.cfg.xml로 보이는 것입니다. 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을 참조합니다. 이것은 Java에서 Hibernate에서 사용했던 것과 거의 동일한 설정이므로, 내가 여기서 잘못하고있는 것이 확실하지 않습니다. 어떤 아이디어?

"파일을 찾을 수 없습니다 'C : \ 사용자가 프로젝트 \ 비주얼 스튜디오 2010 \ 타일러 \ 문서 \ \ MyProject를 \ MyProject를 \ ConsoleApplication \ 빈

편집

가장 안쪽 예외는 다음과 같다 \ Debug \ hibernate.cfg.xml '. "

ConsoleApplication에는 사용자 개체를 만든 진입 점이 들어 있으며 내 DAO와 함께 유지하려고합니다. 왜 구성 파일을 찾고 있습니까? 실제 지속성은 DataAccess에있는 DAO에서 발생합니다. 또한 ConsoleApplication에 구성 파일을 추가해도 여전히 찾지 못합니다.

+1

예외 내용을 게시하십시오. – Vadim

+0

@ Yads : 내 소식을 업데이트했습니다. –

답변

0

NHibernate가 설정 파일을 찾기위한 기본 위치이기 때문에 그 디렉토리에서 설정 파일을 찾고 있습니다. 이 디렉토리는 네임 스페이스와 아무 관련이 없습니다. 출력 디렉토리에 복사하려면 프로젝트의 hibernate.cfg.xml 파일에 속성을 설정해야합니다.

+0

죄송합니다. 늦었습니다. 네임 스페이스는 제가 의미하는 단어가 아닙니다. 파일을 출력물로 복사하도록 설정하면 내가 찾고 있던 것이 었습니다. 감사합니다! –

0

cfg.xml 파일을 NHibernate 어셈블리가 들어있는 폴더에 복사 할 수 있다면이 문제가 해결 될 것이라고 생각합니다.

관련 문제