6

私は C#/NHibernate/MS SQL Server プロジェクトを継承しており、NHibernate は初めてです。最初に与えられたタスクの 1 つは、データベースを 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

4

2 に答える 2

9

私は自分の質問に対する答えを見つけました。私の作業環境に固有の問題がいくつかありましたが、最終的に Mono.Security.dll と Npgsql.dll が最終的な出力ディレクトリで利用できませんでした。2 つのファイルは、データ アクセス レイヤー (クラス ライブラリ) の bin ディレクトリにありましたが、クラス ライブラリを呼び出したテスト プロジェクトの bin ディレクトリにはありませんでした。現在、すべてが正常に機能しています。

于 2012-11-13T21:45:17.227 に答える
1

nhibernate ライブラリに NuGet を使用している場合は、パッケージをアンインストールして再インストールしてみてください。この種の問題を解決するために誰かが知っているより効率的な方法があると確信していますが、私にとってはこの正確な問題を解決しました。

于 2012-11-10T13:49:55.263 に答える