[英].NET Maui SQLite Connection
我已将 sqlite-net-plc package 添加到我的项目中,并创建了一个数据库 class,如下所示:
public class Database
{
public Database()
{
var dbPath = Path.Combine(FileSystem.AppDataDirectory, "databaseTest.db3");
Connection = new SQLiteAsyncConnection(dbPath);
Connection.CreateTableAsync<User>().Wait();
}
public SQLiteAsyncConnection Connection { get; set; }
}
这似乎适用于 Android 应用程序,允许我从任何地方操作数据库。
但是,当我通过具有活动 Mac 连接的 IOS 模拟器运行此应用程序时,我收到以下错误:
'SQLite.SQLiteConnection' 的类型初始化程序引发了异常。
我相信无法解决与 SQLite 数据库的活动连接,但我不知道为什么。 对此的任何见解都会很棒。
提前致谢。
在将 sqlite-net-pcl 添加到股票 MAUI 测试应用程序之后,我在 iOS 和 Android 上都看到了相同的异常,直到我明确地将https://www.nuget.org/packages/SQLitePCLRaw.bundle_green/2.0.7包添加到该项目。
我看到 9 月 7 日,“原始”包作者指出他有工作要做: https : //github.com/ericsink/SQLitePCL.raw/discussions/449#discussioncomment-1282643
sqlite-net-pcl 依赖于 2.0.4 版的“原始”nuget,它已有一年多的历史了。 也许 2.0.7 修复了一些与 iOS 相关的问题? 在那个时间范围内,我在https://github.com/ericsink/SQLitePCL.raw/commits/master 上看到了一些 Apple 特定的提交。
也许你已经安装了一个更新的版本,它有针对 Android 的修复,但没有针对 iOS?
问题在 github 上回答: https : //github.com/dotnet/maui/issues/3211
让我让 iOS 工作:
安装这些包
<PackageReference Include="sqlite-net-pcl" Version="1.8.116" />
<PackageReference Include="SQLitePCLRaw.provider.sqlite3" Version="2.1.0" />
<PackageReference Include="SQLitePCLRaw.bundle_green" Version="2.1.0" />
然后将Platforms.iOS.AppDelegate.cs
更改为
[Register("AppDelegate")]
public class AppDelegate : MauiUIApplicationDelegate
{
protected override MauiApp CreateMauiApp()
{
raw.SetProvider(new SQLite3Provider_sqlite3());
return MauiProgram.CreateMauiApp();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.