NHibernate Oracle - не удается загрузить DLL 'OraOps10w.dll' - PullRequest
0 голосов
/ 19 октября 2011

Я впервые использую nHibernate (также никогда не использовал hibernate), и я пытаюсь сделать это с помощью oracle db.Мой проект - это веб-приложение MVC3, VS20010.Итак, вот мой конфигурационный файл:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
    <property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property>
    <property name="connection.connection_string">Data Source=srcname;User ID=myuser;Password=****;Unicode=True</property>
    <property name="show_sql">true</property>
  </session-factory>
</hibernate-configuration> 

Вот как я строю сеанс (скопированный из nhibernate forge)

private static ISessionFactory SessionFactory
        {
            get
            {
                if (_sessionFactory == null)
                {
                    var configuration = new Configuration();
                    configuration.Configure();
                    configuration.AddAssembly(typeof(Categoria).Assembly);
                    _sessionFactory = configuration.BuildSessionFactory();
                }
                return _sessionFactory;
            }
        }

Мое текущее сообщение об ошибке:

Невозможно загрузить DLL 'OraOps10w.dll': не удалось найти указанный модуль.(Исключение из HRESULT: 0x8007007E), по адресу _sessionFactory = configuration.BuildSessionFactory ();

До этого я столкнулся с несколькими проблемами, которые привели меня к:

  • Добавьте ссылку на Oracle.DataAccess.dll
  • Добавьте тег DbproviderFactories в web.config.Следующим образом: (по какой-то причине здесь не удалось вставить весь код)

add name="Oracle Data Provider for .NET"
invariant="Oracle.DataAccess.Client"
description="Oracle Data Provider for .NET"
type="Oracle.DataAccess.Client.OracleClientFactory,
      Oracle.DataAccess,
      Version=2.111.6.20,
      Culture=neutral,
      PublicKeyToken=89b483f429c47342" 

1 Ответ

0 голосов
/ 19 октября 2011

Провайдеру данных Oracle требуется несколько библиотек:

Из пакета ODAC:

  • Oracle.DataAccess.dll (это единственная сборка .NET во всем списке)
  • OraOps11w.dll

Из пакета InstantClient-BasicLite:

  • oci.dll
  • ociw32.dll
  • orannzsbb11.dll
  • oraocci11.dll
  • oraociicus11.dll

Поскольку вы можете добавить только Oracle.DataAccess.dll в качестве ссылки .NET, вынужен какой-то другой способ убедиться, что все остальные dll тоже находятся в каталоге .exe.

Насколько я знаю, есть также установщик для мгновенного клиента, так что вам не нужны эти dll в вас.exe, но затем вы должны убедиться, что на всех клиентах это установлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...