【问题标题】:NHibernate connection string problemNHibernate 连接字符串问题
【发布时间】: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


【解决方案1】:

显然,Oracle 10g 在 64 位系统上有点挑剔。最好的选择似乎是切换到 MySQL。

【讨论】:

    【解决方案2】:

    我今天遇到了这个错误,发现了有趣的事情。 我尝试在语句之前使用 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();

    一切都开始起作用了。

    【讨论】:

      猜你喜欢
      • 2011-08-31
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多