【发布时间】:2011-01-09 22:27:07
【问题描述】:
我正在将 NHibernate 与 Web 应用程序和 Oracle 10g XE 一起使用,我目前收到以下错误:
ORA-06413: Connection not open.
我的猜测是我的连接字符串有问题。这是我在 Web.config 中的 Hibernate 配置:
<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>
我也尝试过使用以下连接字符串:
<property name="connection.connection_string">
User ID=myid;Password=mypassword;Data Source=localhost
</property>
这导致了以下错误:
ORA-12154: TNS:could not resolve the connect identifier specified.
谁能提供任何关于我在这里可能做错了什么的见解?
编辑
我在同一个解决方案中创建了一个控制台应用程序项目。我创建了一个具有相同设置的 hibernate.cfg.xml 文件并将其添加到该项目中。我可以毫无问题地持久化对象。
我已将我的数据库从 Oracle 10g 切换到 MySQL,它在 Web 应用程序中运行良好。为什么 Oracle 10g 只能在控制台应用程序中运行,而不能在 Web 应用程序中运行?
【问题讨论】:
-
@Falcon:我在此处发布之前确实搜索了此错误,但据我了解,由括号引起的“无效路径”错误(我相信是错误 3807408)已在以后的版本中得到解决。
-
文件扩展名呢?
-
那个也是。我持怀疑态度的原因是,我实际上已经将相同的设置用于不同的非 Web 应用程序,并且没有任何连接问题。不同之处在于我有一个 hibernate.cfg.xml 文件,而不是像现在这样在 Web.config 文件中拥有 Hibernate 配置。但是,我尝试使用单独的 hibernate.cfg.xml 文件并得到相同的错误。
标签: c# .net nhibernate oracle10g