.NET MAUIでSQLiteを使おうとしたらハマったのでその解決方法

IT

はじめに

Xamarinのサポート終了が正式に決まり、今あるアプリをMAUIで書き直さなければならなくなりました。
そこでローカルデータベースとして利用していたSQLiteがAndroidだとそのまま使えなかったので、メモとして残しておきます。
(Windowsでは動きました。)

症状

以下のNuGetパッケージを利用していました。

SQLite-net-PCL

エラーが出るのはデータベースファイルを見つける時です。
例えば下記のようなコードを書くとします。

public class Database
{
    readonly SQLiteAsyncConnection _database;

    public Database(string dbPath)
    {
        _database = new SQLiteAsyncConnection(dbPath);
        _database.CreateTableAsync<Person>().Wait();
    }
}

以下のようにデータベースのパスを指定してデータベースに接続します。

var db = new Database(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "sample.db3"));

下記のエラーが出ます。

System.AggregateException: 'One or more errors occurred. (The type initializer for 'SQLite.SQLiteConnection' threw an exception.)'

対策

色々試してみましたが、以下のNuGetパッケージをインストールすれば、解決しました。

SQLitePCLRaw.provider.dynamic_cdecl

まとめ

いかがだったでしょうか?.NET MAUIがやはりマイナーなのか情報が少ないため、トラブル時に時間がかかってしまいますね。
他にも細かな不具合やバグがあるんですが・・・。MAUI大丈夫なんだろうか・・・。
ではまたつまずいた点があれば共有します。

タイトルとURLをコピーしました