2011-01-09 18 views
0

私は、WebアプリケーションとOracle 10グラムXEとNHibernateはを使用している、と私は現在、次のエラーを取得しています:NHibernateの接続文字列の問題

ORA-06413: Connection not open.

私の推測では、それは私の接続文字列に問題がありますです。私はまた、次の接続文字列を使用してみました

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory name="MyProject.MyAssembly"> 
     <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property> 
     <property name="connection.connection_string">Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)));User ID=myid;Password=mypassword</property> 
     <property name="show_sql">true</property> 
     <property name="dialect">NHibernate.Dialect.Oracle10gDialect</property> 
     <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property> 
     <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property> 
     <mapping assembly="Domain" /> 
    </session-factory> 
</hibernate-configuration> 

:ここにWeb.configファイルでの私のHibernate設定です

ORA-12154: TNS:could not resolve the connect identifier specified.

:次のエラーが生じた

<property name="connection.connection_string"> 
    User ID=myid;Password=mypassword;Data Source=localhost 
</property> 

誰かが私がここで間違っているかもしれないことについて何らかの洞察を提供することができますか?

編集

私は同じソリューション内のコンソールアプリケーションプロジェクトを作成しました。私は同じ設定でhibernate.cfg.xmlファイルを作成し、そのプロジェクトに追加しました。私は問題なくオブジェクトを永続させることができます。

データベースをOracle 10gからMySQLに切り替えたところ、Webアプリケーションで問題なく動作しました。なぜOracle 10gはコンソールアプリケーションでのみ動作し、Webアプリケーションでは動作しませんか?

+0

http://www.dba-oracle.com/t_ora_06413_connection_not_open.htm – Falcon

+0

@Falcon:ここに投稿する前にこのエラーを検索しましたが、「無効なパス」バグバグ3807408私は)カッコで引き起こされたことは、それ以降のリリースで対処されました。 –

+0

ファイル拡張子はどうですか? – Falcon

答えて

1

明らかにOracle 10gは、64ビットシステムではちょっと厄介です。最良の選択肢はMySQLに切り替えるようです。

0

今日このエラーに直面し、面白いことが見つかりました。 は、私が参照としてXEクライアントをoracle.dataaccecc.dll使用しようとしたと声明

 sessionFactory = new NHibernate.Cfg.Configuration().Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "NHibernate\\Oracle.cfg.xml")).BuildSessionFactory(); 
     

前に、私はこれらの行に入力:

 
OracleConnection conn = new OracleConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["connString"].ConnectionString); 
      conn.Open(); 
conn.Close(); 

を、すべてが動作するように始めました。