gpt4 book ai didi

.net - 在 .NET 4 中使用 Fluent NHibernate + SQLite 有问题吗?

转载 作者:IT王子 更新时间:2023-10-29 06:19:31 26 4
gpt4 key购买 nike

我有一个使用 Nhibernate 和 FluentNHibernate + SQLite 的 VS2010 .Net3.5 运行的 WPF 应用程序,一切正常。

现在我想改为使用 .Net4,但这变成了比我预期的更痛苦的体验。在设置连接时,我这样做:

var cfg = Fluently.Configure().
Database(SQLiteConfiguration.Standard.ShowSql().UsingFile("MyDb.db")).
Mappings(m => m.FluentMappings.AddFromAssemblyOf<MappingsPersistenceModel>());
_sessionFactory = cfg.BuildSessionFactory();

BuildSessionFactory() 调用抛出 FluentConfigurationException 说:

An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more details.

内部异常为我们提供了更多信息:

Could not create the driver from NHibernate.Driver.SQLite20Driver, NHibernate, Version=2.1.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4.

还有进一步的 InnerException:

The IDbCommand and IDbConnection implementation in the assembly System.Data.SQLite could not be found. Ensure that the assembly System.Data.SQLite is located in the application directory or in the Global Assembly Cache. If the assembly is in the GAC, use element in the application configuration file to specify the full name of the assembly.

现在 - 对我来说,它似乎没有找到 System.Data.SQLite.dll,但我无法理解这一点。到处都是引用我有“复制本地”,并且我已经验证它在使用 SQLite 的项目的每个构建文件夹中。我还手动将它复制到解决方案的每个 Debug 文件夹中 - 但运气不佳。

注意事项:

  • 这与我升级到 .Net4 之前运行良好的代码完全相同。
  • 我之前确实看到了一些 x64 x86 不匹配问题,但我已经切换到使用 x86 作为目标平台和所有引用的 dll。我已验证调试文件夹中的所有文件都是 x86。
  • 我已经尝试过预编译的 Fluent dll,我已经尝试过自己编译,并且我已经使用 .Net4 编译了我自己的 Fluent 版本。
  • 我看到有 also others that have seen this problem ,但我还没有真正看到任何解决方案。

在@devio 的回答后,我尝试添加对 SQLite dll 的引用。这并没有改变任何东西,但我希望我做对了。这是我添加到 app.config 文件的根节点的内容:

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<qualifyAssembly partialName="System.Data.SQLite" fullName="System.Data.SQLite, Version=1.0.60.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
</assemblyBinding>
</runtime>

有人成功地将 Fluent 与 .Net4 和 SQLite 结合使用了吗?帮助!我迷路了……

最佳答案

当我尝试使用 Fluent with .Net4 和 SQLite 时,我也收到了相同的错误消息,但是当我仔细查看时,我发现了不同的错误消息。

无法加载类型 System.Data.SQLite.SQLiteConnection、System.Data.SQLite。System.IO.FileLoadException:混合模式程序集是针对运行时版本“v2.0.50727”构建的,如果没有附加配置信息,则无法在 4.0 运行时中加载。

所以我所做的就是像这样将 useLegacyV2RuntimeActivationPolicy="true"添加到“启动”标签。

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

我不需要在“runtime”标签内添加 dependentAssembly 或任何东西。根据这个link text还有这个link text ,它应该只用于移民援助。希望 SQLite 能尽快更新。

希望对您有所帮助!卡尔金

关于.net - 在 .NET 4 中使用 Fluent NHibernate + SQLite 有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2697795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com