【问题标题】:Could not create the driver from NHibernate.Driver.OracleDataClientDriver (with copy local set to true)无法从 NHibernate.Driver.OracleDataClientDriver 创建驱动程序(将本地复制设置为 true)
【发布时间】:2012-07-28 12:51:05
【问题描述】:

我什至在 app.config 中添加了这一小块配置:

<qualifyAssembly partialName="Oracle.DataAccess"
             fullName="Oracle.DataAccess,
                            Version=2.112.2.0,
                           Culture=neutral,
                           PublicKeyToken=89b483f429c47342" />
    </assemblyBinding>

...没有成功。有什么问题? 另外,为了确保我的 app.config 是风水,这里是:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="hibernate-configuration"
    type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
  </configSections>
  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <property name="show_sql">true</property>
      <property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
      <property name="connection.driver_class">
        NHibernate.Driver.OracleDataClientDriver
      </property>
      <property name="connection.connection_string_name">
        GuitarStore2
      </property>
      <property name="connection.provider">
        NHibernate.Connection.DriverConnectionProvider
      </property>
    </session-factory>
  </hibernate-configuration>
  <connectionStrings>
    <add name="GuitarStore"
    connectionString="****************"/>
  <add name="GuitarStore2"
    connectionString="****************"/>
  </connectionStrings>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <qualifyAssembly partialName="Oracle.DataAccess"
             fullName="Oracle.DataAccess,
                            Version=2.112.2.0,
                           Culture=neutral,
                           PublicKeyToken=89b483f429c47342" />
    </assemblyBinding>
  </runtime>
</configuration>

作为记录,我在 Windows 7 64 位下使用 .NET 3.5 上的最新 Nhibernate (3.3.1)。而且,对于完全相同的项目,我在另一台机器上没有遇到任何异常,但使用的是 Windows XP。

【问题讨论】:

  • 在尝试使用 MS 的 ADO.NET 提供程序 for Oracle 后,我收到另一个有趣的错误:“尝试加载 Oracle 客户端库引发 BadImageFormatException。在 64 位模式下运行 32 位时会出现此问题已安装 Oracle 客户端组件。”我感觉 Oracle Provider 也发生了同样的事情。

标签: c# .net oracle nhibernate


【解决方案1】:

问题不在于 NHibernate,而是 IL 在使用 32 位版本的 ODP 时生成 64 位代码这一事实,因此只需将“任何 CPU”选项更改为“x86”,我就摆脱了例外。

【讨论】:

    猜你喜欢
    • 2011-09-02
    • 2011-05-12
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 2013-06-18
    相关资源
    最近更新 更多