使用SQLite运行Nh 3.2会引发以下异常:
---> NHibernate.HibernateException:无法从NHibernate.Driver.SQLite20Driver,NHibernate,Version = 3.2.0.4000,Culture = neutral,PublicKeyToken = aa95f207798dfdb4创建驱动程序。 ---> System.Reflection.TargetInvocationException:调用目标抛出了异常。 ---> System.ArgumentException:无法找到请求的.Net Framework数据提供程序。它可能没有安装。
我使用最新的(net 4兼容)版本的SQlite:版本1.0.74.0。我在配置中添加了以下内容:
.Database(SQLiteConfiguration.Standard.InMemory().Raw("hbm2ddl.keywords", "none").ShowSql())
我,也在配置文件中添加:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
奇怪的是,它首先起作用了。现在我得到了上述错误。
答案 0 :(得分:11)
我使用上面提供的解决方案修复了这个问题(谢谢),但也想通过使用nuget你只需通过包管理器直接将System.data.sqlite安装到你的项目中,你就不需要任何web .config设置。
Install-Package System.Data.Sqlite.x86
答案 1 :(得分:1)
你可能知道这一点,但以防万一。最新版本的SQLite for .NET分发为2个dll。
两个dll都需要与EXE位于同一个文件夹中。 Interop dll是特定于平台的,因此您必须手动(或后期构建)复制x86或x64 版本。要记住的一件事是 SQLite.Interop.dll 取决于 MSVCR100.DLL 。这是Visual C ++ 2010 SP1可再发行组件包的一部分,您需要确保拥有它。请参阅此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>
答案 2 :(得分:0)
使用fluentnhibernate二进制文件1.0.60.0附带的版本