2011-01-09 6 views
0

NHibernateの設定に問題がありますが、問題の内容が正確ではありません。私はドメインオブジェクトをデータベースに保存しようとしています(Oracle 10g XE)。しかし、ISessionFactoryの作成中にTypeInitializationExceptionが発生します。私はデータベースにドメインオブジェクトを永続化するために使用するDAOを作成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> 

:ここに同じように私は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:\ユーザーはプロジェクト\ Visual Studioの2010 \タイラー\ドキュメント\ \ MyProjectと\ MyProjectと\ ConsoleApplication \ binに

編集

最も内側の例外は以下のとおりです。 \ Debug \ hibernate.cfg.xml '。 "

ConsoleApplicationには、私がUserオブジェクトを作成したエントリポイントが含まれており、DAOで永続化しようとしています。なぜそこに設定ファイルがあるのですか?実際の永続化は、DataAccessにあるDAOで行われます。また、ConsoleApplicationに設定ファイルを追加しても、それを見つけられません。

+1

例外の内容を投稿してください。 – Vadim

+0

@ヤーズ:私は自分の投稿を更新しました。 –

答えて

0

NHibernateが設定ファイルを探すためのデフォルトの場所であるため、そのディレクトリ内の設定ファイルを探しています。これはディレクトリであり、名前空間とは何の関係もないことに注意してください。出力ディレクトリにコピーするには、プロジェクトのhibernate.cfg.xmlファイルのプロパティを設定する必要があります。

+0

申し訳ありませんが、遅れています - 名前空間は私が意味する言葉ではありませんでした。出力にコピーするようにファイルを設定することは、私が探していたものでした、ありがとう! –

0

cfg.xmlファイルをNHibernateアセンブリを含むフォルダにコピーできる場合、この問題は解決されると考えています。

関連する問題