繁体   English   中英

.NET 毛伊岛 SQLite 连接

[英].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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM