2012-11-09 11 views
5

Odziedziczyłem projekt C#/NHibernate/MS SQL Server i jestem nowy w NHibernate. Jednym z pierwszych zadań, które mi zadałem, było przeniesienie bazy danych z MS SQL Server (2008 R2) do PostgreSQL 9.2. Używam Npgsql 2.0.12 (wersja .net 2.0). Mono.Security.dll i Npgsql.dll są zawarte w moim Referencje projektu i istnieją w moim katalogu bin. Gdy kod wykonuje następującą linię:Nie można utworzyć sterownika z NHibernate.Driver.NpgsqlDriver

SessionFactory.OpenSession(); 

jest wyjątek z komunikatem

„Nie można utworzyć sterownik z NHibernate.Driver.NpgsqlDriver”.

Wyszukiwanie w sieci, dało mi kilka pomysłów, ale żaden nie zadziałał. Ten kod, który odziedziczyłem, jest produkowany na kilku klientach bez problemów z używaniem MS SQL Server. Oto mój plik 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> 

Nie zapomnij podać "za pomocą Npgsql;", to tam. Jakieś sugestie?

Pozdrawiam,

B

Odpowiedz

1

Jeśli używasz Nuget Dla NHibernate biblioteki spróbuj odinstalować pakiety i zainstaluj je ponownie. Jestem pewien, że istnieje skuteczniejszy sposób, w jaki ktoś wie, jak rozwiązać ten problem, ale dla mnie rozwiązał ten dokładny problem.

+0

Cześć Tom, dziękuję za poświęcenie czasu na pomoc. Nie używam NuGeta, ponieważ moje IDE to Visual Studio 2008. Usunąłem i zastąpiłem moje biblioteki nHibernate i Npgsql, ale wciąż nie miałem szczęścia. Ponownie, używając MS SQL Server działa dobrze, ale próba połączenia z Npgsql zgłasza wyjątek. – Woolly

9

Znalazłem odpowiedź na moje własne pytanie. Było kilka problemów specyficznych dla mojego środowiska pracy, ale ostatecznie Mono.Security.dll i Npgsql.dll nie były dostępne w moim końcowym katalogu wyjściowym. Dwa pliki były obecne w katalogu bin mojej warstwy dostępu do danych (biblioteka klas), ale nie w katalogu bin mojego projektu testowego, który wywołał bibliotekę klas. Teraz wszystko działa dobrze.

+1

To też mi pomogło. Dlaczego nie akceptujesz swojej odpowiedzi? – IvanP

+0

Pomogłem zmienić Copy Local na true –