【问题标题】:Sqlite with Blazor (.NET 5) -> System.DllNotFoundException: e_sqlite3 but OK with Windows FormsSqlite 与 Blazor (.NET 5) -> System.DllNotFoundException: e_sqlite3 但适用于 Windows 窗体
【发布时间】:2023-03-07 20:06:01
【问题描述】:

刚开始使用 Blazor,尝试通过 Microsoft.Data.Sqlite 库使用 Sqlite。 创建了一个在 Windows 窗体项目中运行良好的数据类,其中 bin 文件夹下的 net5.0-windows 文件夹包含一个运行时文件夹,其中包含用于各种平台的 e_sqlite3 dll。

创建了一个简单的“Hello World”Blazor Web 应用并添加了我的数据类并得到以下错误:

暴击:Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100] 未处理的异常呈现组件:“Microsoft.Data.Sqlite.SqliteConnection”的类型初始化程序引发了异常。 System.TypeInitializationException:“Microsoft.Data.Sqlite.SqliteConnection”的类型初始化程序引发了异常。 ---> System.Reflection.TargetInvocationException:调用的目标已抛出异常。 ---> System.DllNotFoundException: e_sqlite3

bin 文件夹不包含任何运行时文件夹或 e_sqlite3 dll。

在 Google 上搜索这似乎是一个常见错误,并且很明显是关于如何部署包,但我还没有找到解决方案。

蚂蚁指针?

【问题讨论】:

  • 如果你想在服务器端使用 sqlite,你应该使用 blazor 服务器模板。如果您想在 blazor webassembly 的客户端使用它 - 这是不可能的,如果是这种情况,您可能应该查看 IndexedDB
  • 感谢您的回复。我会调查替代方案。我希望继续使用 Web Assembly 模板。我仍然对整个 Blazor 技术有所了解。我正在寻找一种轻量级的便携式解决方案,它可以在 linux 上运行,并且理想情况下(我很欣赏这在 Blazor 中“还没有”准备好)也可以在智能手机上运行。
  • 那么这个轻量级应用应该做什么样的数据访问呢?如果很简单,你可以自己抽象出来,为浏览器场景做本地存储适配器,为别人做文件系统适配器。
  • 这实际上是一个旧项目,我正在重新利用它来尝试学习一些新技术。最初的数据库是 SqlCompact,我打算切换到 SQLite,但是只有大约 10 个表,每个表最多 10k 行,所以我可以查看替代方案。与此同时,我在理解 Blazor 和 Web Assembly 方面取得了进展。

标签: c# sqlite blazor


【解决方案1】:

在 .NET 5 中,您不能在 Web 应用程序/浏览器中将 SQLite 与 Blazor 一起使用。

但是,从 .NET 6 开始,您可以在 Blazor WebAssembly 中包含本机依赖项。在 dotnet conf 2021 内部,他们甚至表明了这一点。它工作得非常好。

您可以在此处查看此操作:Steven Sanderson on Blazor WebAssemby @ .NETConf21(大约 30 分钟的观看时间)。

Steve Sanderson's GitHub repo 上提供了上述代码示例。

【讨论】:

  • 根据您的回答,您能否提供.net 6 blazor wasm sqlite 的@Steve Sanderson 项目的工作示例,因为我遇到了这个问题stackoverflow.com/questions/70076688/… 您的及时回复将不胜感激。谢谢跨度>
猜你喜欢
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
  • 2011-12-07
  • 2012-03-02
  • 2020-11-23
  • 1970-01-01
相关资源
最近更新 更多