Benutzerdefinierte SQLite-Versionen
Microsoft.Data.Sqlite
basiert auf SQLitePCLRaw
. Sie können benutzerdefinierte Versionen der nativen SQLite-Bibliothek verwenden, indem Sie ein Bundle verwenden oder einen SQLitePCLRaw
-Anbieter konfigurieren.
Bundles
SQLitePCLRaw
bietet benutzerfreundliche Bundlepakete, mit denen problemlos die richtigen Abhängigkeiten auf verschiedenen Plattformen genutzt werden können. Im Microsoft.Data.Sqlite
-Hauptpaket ist SQLitePCLRaw.bundle_e_sqlite3
standardmäßig enthalten. Installieren Sie das Microsoft.Data.Sqlite.Core
-Paket und das gewünschte Bundlepaket, wenn Sie ein anderes Bundle verwenden möchten. Bundles werden automatisch von Microsoft.Data.Sqlite
initialisiert.
Paket | Beschreibung |
---|---|
SQLitePCLRaw.bundle_e_sqlite3 | Dieses Bundle stellt eine konsistente Version von SQLite auf allen Plattformen bereit. Es umfasst die FTS4-, FTS5-, JSON1 und R*Tree-Erweiterungen. Dies ist die Standardeinstellung. |
SQLitePCLRaw.bundle_e_sqlcipher | Hiermit wird ein inoffizieller Open-Source-Build von SQLCipher bereitgestellt. |
SQLitePCLRaw.bundle_green | Dies ist mit bundle_e_sqlite3 identisch, mit der Ausnahme, dass unter iOS die SQLite-Systembibliothek verwendet wird. |
SQLitePCLRaw.bundle_sqlite3 | Hier wird die SQLite -Systembibliothek verwendet. |
SQLitePCLRaw.bundle_winsqlite3 | Hier wird mit winsqlite3.dll die SQLite-Systembibliothek unter Windows 10 verwendet. |
SQLitePCLRaw.bundle_zetetic | Hier werden die offiziellen SQLCipher -Builds von Zetetic (nicht enthalten) verwendet. |
Nutzen Sie für die Verwendung des inoffiziellen Open-Source-Builds von SQLCipher
die folgenden Befehle.
dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.bundle_e_sqlcipher
Verfügbare SQLitePCLRaw-Anbieter
Wenn Sie nicht auf ein Bundle angewiesen sind, können Sie die verfügbaren Anbieter von SQLite mit der Kernassembly verwenden.
Anbieter | Beschreibung |
---|---|
SQLitePCLRaw.provider.dynamic | Der dynamic -Anbieter lädt die native Bibliothek, anstatt System.Runtime.InteropServices.DllImportAttribute-Attribute zu verwenden. Weitere Informationen zur Verwendung dieses Anbieters finden Sie unter Verwenden des dynamischen Anbieters. |
SQLitePCLRaw.provider.e_sqlite3 | e_sqlite3 ist der Standardanbieter. |
SQLitePCLRaw.provider.e_sqlcipher | Der e_sqlcipher -Anbieter bietet das inoffizielle und nicht unterstützte SQLCipher . |
SQLitePCLRaw.provider.sqlite3 | Der sqlite3 -Anbieter bietet ein vom System bereitgestelltes SQLite für iOS, macOS und Linux. |
SQLitePCLRaw.provider.sqlcipher | Der sqlcipher -Anbieter ist für offizielle SQLCipher -Builds von Zetetic bestimmt. |
SQLitePCLRaw.provider.winsqlite3 | Der winsqlite3 -Anbieter ist für Windows 10-Umgebungen bestimmt. |
Verwenden Sie die folgenden Befehle für den sqlite3
-Anbieter:
dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.core
dotnet add package SQLitePCLRaw.provider.sqlite3
Nachdem die Pakete installiert sind, legen Sie den Anbieter auf die sqlite3
-Instanz fest.
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}");
}
}
}
Verwenden des dynamischen Anbieters
Sie können Ihren eigenen Build von SQLite verwenden, indem Sie das SQLitePCLRaw.provider.dynamic_cdecl
-Paket nutzen. In diesem Fall sind Sie für die Bereitstellung der nativen Bibliothek mit Ihrer App verantwortlich. Beachten Sie, dass die Details für die Bereitstellung nativer Bibliotheken mit Ihrer App in Abhängigkeit von der verwendeten .NET-Plattform und Runtime erheblich variieren können.
Zuerst muss IGetFunctionPointer
implementiert werden. Die Implementierung in .NET Core erfolgt so:
class NativeLibraryAdapter : IGetFunctionPointer
{
readonly IntPtr _library;
public NativeLibraryAdapter(string name)
=> _library = NativeLibrary.Load(name);
public IntPtr GetFunctionPointer(string name)
=> NativeLibrary.TryGetExport(_library, name, out var address)
? address
: IntPtr.Zero;
}
Konfigurieren Sie als Nächstes den SQLitePCLRaw
-Anbieter. Stellen Sie sicher, dass Sie diesen Schritt abgeschlossen haben, bevor Microsoft.Data.Sqlite
in Ihrer App verwendet wird. Vermeiden Sie außerdem die Verwendung eines SQLitePCLRaw
-Bundlepakets, das Ihren Anbieter möglicherweise überschreibt.
SQLite3Provider_dynamic_cdecl
.Setup("sqlite3", new NativeLibraryAdapter("sqlite3"));
SQLitePCL.raw.SetProvider(new SQLite3Provider_dynamic_cdecl());
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für