【问题标题】:SQLite throws exception with NH 3.2SQLite 在 NH 3.2 中抛出异常
【发布时间】:2011-08-27 12:58:11
【问题描述】:

使用 SQLite 运行 Nh 3.2 会引发以下异常:

---> NHibernate.HibernateException:无法从 NHibernate.Driver.SQLite20Driver 创建驱动程序,NHibernate,版本=3.2.0.4000,文化=中性,PublicKeyToken=aa95f207798dfdb4。 ---> System.Reflection.TargetInvocationException:调用的目标已抛出异常。 ---> System.ArgumentException:找不到请求的 .Net Framework 数据提供程序。可能没有安装。

我使用 SQlite 的最新(与 net 4 兼容)版本:版本 1.0.74.0。我已将以下内容添加到我的配置中:

.Database(SQLiteConfiguration.Standard.InMemory().Raw("hbm2ddl.keywords", "none").ShowSql())

我,也在配置文件中添加:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0"/>
</startup>

奇怪的是,它首先奏效了。现在我得到了上述错误。

【问题讨论】:

    标签: nhibernate system.data.sqlite


    【解决方案1】:

    我使用上面提供的解决方案解决了这个问题(谢谢),但也发现通过使用 nuget,您可以通过包管理器直接将 System.data.sqlite 安装到您的项目中,并且您不需要任何网络.config 设置。

    Install-Package System.Data.Sqlite.x86
    

    【讨论】:

    • 这确实是最方便最简单的解决方案。一般使用 NuGet 作为包管理器非常方便!
    【解决方案2】:

    您可能知道这一点,但以防万一。 SQLite for .NET 的最新版本以 2 个 dll 分发。

    • System.Data.SQLite.dll
    • SQLite.Interop.dll

    这两个 dll 需要与您的 EXE 位于同一文件夹中。互操作 dll 是特定于平台的,因此您必须手动(或构建后)复制 x86 或 x64 版本。要记住的一件事是 SQLite.Interop.dll 依赖于 MSVCR100.DLL。这是 Visual C++ 2010 SP1 Redistributable Package 的一部分,您需要确保拥有它。请看这个answer。

    同样在 web 环境中你可能需要这个配置:

    <system.data>
        <DbProviderFactories>
            <remove invariant="System.Data.SQLite"/>
            <add 
              name="SQLite Data Provider" 
              invariant="System.Data.SQLite" 
              description=".Net Framework Data Provider for SQLite" 
              type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
        </DbProviderFactories>
    </system.data>
    

    【讨论】:

    • 谢谢,我可以使用 SqlLite 1.0.65.1 的早期版本。为什么它不适用于最新版本,我不知道。
    • 要记住的一点是 SQLite.Interop.dll 依赖于 MSVCR100.DLL。这是 MS C 运行时,您需要确保拥有它。
    【解决方案3】:

    使用 fluentnhibernate 二进制文件 1.0.60.0 附带的版本

    【讨论】:

      猜你喜欢
      • 2011-01-11
      • 2011-03-22
      • 2012-01-24
      • 2013-05-24
      • 2011-02-13
      • 1970-01-01
      • 2012-07-17
      • 2016-04-27
      • 1970-01-01
      相关资源
      最近更新 更多