Egyéni SQLite-verziók

Microsoft.Data.Sqlite a SQLitePCLRaw-re épül. A natív SQLite-kódtár egyéni verzióit használhatja egy csomag használatával vagy egy SQLitePCLRaw szolgáltató konfigurálásával.

Csomagok

SQLitePCLRaw kényelmes csomagcsomagokat biztosít, amelyek megkönnyítik a megfelelő függőségek különböző platformokon való használatát. Az alap Microsoft.Data.Sqlite csomag alapértelmezés szerint magában foglalja a SQLitePCLRaw.bundle_e_sqlite3-t. Másik csomag használatához telepítse inkább a Microsoft.Data.Sqlite.Core csomagot a használni kívánt csomaggal együtt. A csomagokat a Microsoft.Data.Sqlite automatikusan inicializálja.

Csomag Leírás
SQLitePCLRaw.bundle_e_sqlite3 Az SQLite konzisztens verzióját biztosítja minden platformon. Tartalmazza az FTS4, FTS5, JSON1 és R*Tree bővítményeket. Ez az alapértelmezett beállítás.
SQLitePCLRaw.bundle_e_sqlcipher A nem hivatalos, nyílt forráskódú buildet biztosítja. SQLCipher
SQLitePCLRaw.bundle_green Ugyanaz, mint bundle_e_sqlite3, kivéve iOS-en, ahol a rendszer SQLite könyvtárát használja.
SQLitePCLRaw.bundle_sqlite3 A rendszer SQLite-kódtárát használja.
SQLitePCLRaw.bundle_winsqlite3 A Windows 10 rendszer SQLite könyvtárát használja winsqlite3.dll.
SQLitePCLRaw.bundle_zetetic A Zetetic hivatalos SQLCipher buildeit használja (nem tartalmazza).

Ha például a nem hivatalos, nyílt forráskódú buildet SQLCipher szeretné használni, használja az alábbi parancsokat.

dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.bundle_e_sqlcipher

Elérhető SQLitePCLRaw-szolgáltatók

Ha nem kötegre támaszkodik, használhatja az SQLite elérhető szolgáltatóit az alapkomponenssel.

Szolgáltató Leírás
SQLitePCLRaw.provider.dynamic A dynamic szolgáltató attribútumok használata helyett a natív kódtárat tölti be. További információért erről a szolgáltatóról, lásd: a dinamikus szolgáltató használata.
SQLitePCLRaw.provider.e_sqlite3 Ez e_sqlite3 az alapértelmezett szolgáltató.
SQLitePCLRaw.provider.e_sqlcipher A e_sqlcipher szolgáltató a nem hivatalos és nem támogatott SQLCipher.
SQLitePCLRaw.provider.sqlite3 A sqlite3 szolgáltató egy rendszer által biztosított SQLite iOS, macOS és Linux rendszerhez.
SQLitePCLRaw.provider.sqlcipher A sqlcipher szolgáltató a SQLCipher hivatalos Zetetic verzióihoz tartozik.
SQLitePCLRaw.provider.winsqlite3 A winsqlite3 szolgáltató Windows 10-környezetekhez készült.

A sqlite3 szolgáltató használatához használja a következő parancsokat:

dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.core
dotnet add package SQLitePCLRaw.provider.sqlite3

A csomagok telepítése után állítsa be a szolgáltatót a sqlite3 példányra.

using Microsoft.Data.Sqlite;
using System;

namespace SqliteProviderSample
{
    class Program
    {
        static void Main()
        {
            SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_sqlite3());

            using var connection = new SqliteConnection();
            Console.WriteLine($"System SQLite version: {connection.ServerVersion}");
        }
    }
}

A dinamikus szolgáltató használata

A SQLitePCLRaw.provider.dynamic_cdecl csomag használatával saját SQLite verzióját használhatja. Ebben az esetben Ön a felelős a natív kódtár alkalmazással való üzembe helyezéséért. Vegye figyelembe, hogy a natív kódtárak alkalmazással való üzembe helyezésének részletei jelentősen eltérnek attól függően, hogy melyik .NET-platformot és futtatókörnyezetet használja.

Először is implementálnia IGetFunctionPointerkell. A .NET Core implementációja a következő:

class NativeLibraryAdapter : IGetFunctionPointer
{
    readonly IntPtr _library;

    public NativeLibraryAdapter(string name)
        => _library = SQLitePCL.NativeLibrary.Load(name);

    public IntPtr GetFunctionPointer(string name)
        => SQLitePCL.NativeLibrary.TryGetExport(_library, name, out var address)
            ? address
            : IntPtr.Zero;
}

Ezután konfigurálja a szolgáltatót SQLitePCLRaw . Győződjön meg arról, hogy a Microsoft.Data.Sqlite használata előtt ez megtörténik az alkalmazásában. Emellett ne használjon olyan csomagcsomagot SQLitePCLRaw , amely felülírhatja a szolgáltatót.

SQLite3Provider_dynamic_cdecl
    .Setup("sqlite3", new NativeLibraryAdapter("sqlite3"));
SQLitePCL.raw.SetProvider(new SQLite3Provider_dynamic_cdecl());