web-dev-qa-db-ja.com

NHibernate.Driver.SQLite20Driverからドライバーを作成できませんでした

例外を発生させるコードは次のとおりです

   public Configuration GetConfiguration()
    {
        var persister = SQLiteConfiguration
            .Standard
            .UsingFile("Test.db")
            .ShowSql();


        var configuration = Fluently
            .Configure()
            .Database(persister)
            .Mappings(map => map.FluentMappings.AddFromAssemblyOf<WordMap>())
            .BuildConfiguration();

        new SchemaExport(configuration).Execute(true, true, false);

        return configuration;

    }

完全な例外テキスト:

失敗:NHibernate.HibernateException:NHibernate.Driver.SQLite20Driver、NHibernate、Version = 2.1.2.4000、Culture = neutral、PublicKeyToken = aa95f207798dfdb4からドライバーを作成できませんでした。

----> System.Reflection.TargetInvocationException:呼び出しのターゲットによって例外がスローされました。

----> NHibernate.HibernateException:アセンブリSystem.Data.SQLiteのIDbCommandおよびIDbConnection実装が見つかりませんでした。 AssemblySystem.Data.SQLiteがアプリケーションディレクトリまたはグローバルアセンブリキャッシュにあることを確認します。アセンブリがGACにある場合は、アプリケーション構成ファイルの要素を使用して、アセンブリのフルネームを指定します。

NHibernateのバージョンは2.1.2.4000です
System.Data.SQLiteのバージョンは1.0.66.0です
ターゲットフレームワークは3.5(x86)です
System.Data.SQLiteのローカルコピーがオンになっています。

何が問題なのですか?

18
StuffHappens

App.configにuseLegacyV2RuntimeActivationPolicy = "true"を追加することで、この問題を取り除きました。 NHibernateSQLiteアプリケーションの.Net4.0へのアップグレードの問題 を参照してください。

6
alun

System.Data.SQLite.dllライブラリをアプリケーションのベースディレクトリ(特にNHibernate.dllライブラリが配置されている場所)にコピーするだけです。 VSで参照として追加する必要もありません。

よろしく
Bronek

11
Bronek

SQLite NuGetパッケージをインストールしたところ、うまくいきました。

9
MoMo

NHibernate.Driver.SQLite20Driver、NHibernate、Version = 2.1.2.4000、Culture = neutral、PublicKeyToken = aa95f207798dfdb4からドライバーを作成できませんでした

解決:

testsettings:ホストを選択します64ビットマシンで64ビットプロセスでテストを実行します

私が助けることができることを願っています。

陽気なコーディング

6

LocalCopyがオンの場合、スタートアッププロジェクトのSystem.Data.SQLiteのバージョンでオンになっていますか。これは、サブプロジェクトのbinディレクトリではなく、それが検索される場所だからです。

2
Wysawyg