Не удалось создать драйвер из NHibernate.Driver.NpgsqlDriver.

Я унаследовал проект C#/NHibernate/MS SQL Server и новичок в NHibernate. Одной из первых поставленных передо мной задач была миграция базы данных с MS SQL Server (2008 R2) на Postgresql 9.2. Я использую Npgsql 2.0.12 (версия .net 2.0). Mono.Security.dll и Npgsql.dll включены в мои ссылки на проект и существуют в моем каталоге bin. Когда код выполняет следующую строку:

SessionFactory.OpenSession();

исключение выдается вместе с сообщением

«Не удалось создать драйвер из NHibernate.Driver.NpgsqlDriver».

Поиск в Интернете дал мне несколько идей, но ни одна из них не сработала. Этот код, который я унаследовал, работает на нескольких клиентах без проблем с использованием MS SQL Server. Вот мой файл hibernate.cfg.xml:

<?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.PostgreSQLDialect</property>
    <property name="connection.driver_class">NHibernate.Driver.NpgsqlDriver</property>
    <property name="connection.connection_string">server=localhost;Port=5432;Database=vehicletracker;User Id=postgres;Password=********;</property>
  </session-factory>
</hibernate-configuration>

Не забыл включить "using Npgsql;", оно там есть. Какие-либо предложения?

С уважением,

B


person Woolly    schedule 09.11.2012    source источник


Ответы (2)


Я нашел ответ на свой вопрос. Было несколько проблем, характерных для моей рабочей среды, но в конечном итоге Mono.Security.dll и Npgsql.dll оказались недоступны в моем окончательном выходном каталоге. Эти два файла присутствовали в каталоге bin моего уровня доступа к данным (библиотека классов), но не в каталоге bin моего тестового проекта, который вызывал библиотеку классов. Теперь все работает нормально.

person Woolly    schedule 13.11.2012
comment
Мне помогло изменить Copy Local на true - person Igor Semin; 17.04.2015

Если вы используете NuGet для библиотек nhibernate, попробуйте удалить пакеты и переустановить их. Я уверен, что есть более эффективный способ, который кто-то знает, чтобы решить эту проблему, но для меня это решило именно эту проблему.

person Tom D.    schedule 10.11.2012
comment
Привет Том, спасибо, что нашли время, чтобы помочь. Я не использую NuGet, так как моей IDE является Visual Studio 2008. Я удалил и заменил свои dll nHibernate и Npgsql, но все равно не повезло. Опять же, использование MS SQL Server работает нормально, но попытка соединения с Npgsql вызывает исключение. - person Woolly; 13.11.2012