#c# #asp.net-mvc #oracle #nhibernate
#c# #asp.net-mvc #Oracle #nhibernate ( гибернация ) #nhibernate
Вопрос:
Я впервые использую 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.Доступ к данным.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:
Поставщику данных Oracle требуется довольно много DLL:
Из пакета ODAC:
- Oracle.DataAccess.dll (это единственное .ЧИСТАЯ сборка во всем списке)
- OraOps11w.dll
Из пакета instantclient-basiclite:
- oci.dll
- ociw32.dll
- orannzsbb11.dll
- oraocci11.dll
- oraociicus11.dll
Поскольку вы можете добавить только Oracle.Доступ к данным.dll в качестве ссылки на .NET вам нужен какой-то другой способ убедиться, что все остальные библиотеки DLL также находятся в каталоге .exe.
Насколько я знаю, есть также установщик для instant client, так что вам не нужны эти библиотеки DLL в вашем каталоге .exe, но тогда вы должны убедиться, что все клиенты установили это.