Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Microsoft.Data.Sqlite bygger på SQLitePCLRaw. Du kan använda anpassade versioner av det interna SQLite-biblioteket med hjälp av ett paket eller genom att konfigurera en SQLitePCLRaw provider.
Buntar
SQLitePCLRaw tillhandahåller bekvämlighetsbaserade paketpaket som gör det enkelt att få in rätt beroenden på olika plattformar.
Microsoft.Data.Sqlite Huvudpaketet tar in SQLitePCLRaw.bundle_e_sqlite3 som standard. Om du vill använda ett annat paket installerar Microsoft.Data.Sqlite.Core du paketet i stället tillsammans med det paketpaket som du vill använda. Paket initieras automatiskt av Microsoft.Data.Sqlite.
| Bunt | beskrivning |
|---|---|
| SQLitePCLRaw.bundle_e_sqlite3 | Tillhandahåller en konsekvent version av SQLite på alla plattformar. Innehåller tilläggen FTS4, FTS5, JSON1 och R*Tree. Det här är standardinställningen. |
| SQLitePCLRaw.bundle_e_sqlcipher | Tillhandahåller en inofficiell version med öppen källkod av SQLCipher. |
| SQLitePCLRaw.bundle_green | Samma som bundle_e_sqlite3, förutom i iOS där systemets SQLite-bibliotek används. |
| SQLitePCLRaw.bundle_sqlite3 | Använder systemets SQLite-bibliotek. |
| SQLitePCLRaw.bundle_winsqlite3 | Använder winsqlite3.dll, system-SQLite-biblioteket i Windows 10. |
| SQLitePCLRaw.bundle_zetetic | Använder de officiella SQLCipher byggena från Zetetic (ingår inte). |
Till exempel, för att använda den inofficiella, open-source versionen av SQLCipher, använd följande kommandon.
dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.bundle_e_sqlcipher
Tillgängliga SQLitePCLRaw-leverantörer
När du inte förlitar dig på ett paket kan du använda tillgängliga SQLite-leverantörer med kärnsammansättningen.
| Leverantör | beskrivning |
|---|---|
| SQLitePCLRaw.provider.dynamic | Providern dynamic läser in det interna biblioteket i stället för att använda System.Runtime.InteropServices.DllImportAttribute attribut. Mer information om hur du använder den här providern finns i Använda den dynamiska providern. |
| SQLitePCLRaw.provider.e_sqlite3 |
e_sqlite3 är standardprovidern. |
| SQLitePCLRaw.provider.e_sqlcipher | Leverantören e_sqlcipher är den inofficiella och stöds inte av SQLCipher. |
| SQLitePCLRaw.provider.sqlite3 | Providern sqlite3 är en systemleverantör som tillhandahålls SQLite för iOS, macOS och Linux. |
| SQLitePCLRaw.provider.sqlcipher | Providern sqlcipher är för officiella SQLCipher versioner från Zetetic. |
| SQLitePCLRaw.provider.winsqlite3 | Providern winsqlite3 är för Windows 10-miljöer. |
Använd följande kommandon för att använda providern sqlite3 :
dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.core
dotnet add package SQLitePCLRaw.provider.sqlite3
När paketen har installerats anger du sedan providern till instansen sqlite3 .
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}");
}
}
}
Använd den dynamiska leverantören
Du kan använda din egen version av SQLite genom att använda SQLitePCLRaw.provider.dynamic_cdecl paketet. I det här fallet ansvarar du för att distribuera det interna biblioteket med din app. Observera att informationen om att distribuera interna bibliotek med din app varierar avsevärt beroende på vilken .NET-plattform och körning du använder.
Först måste du implementera IGetFunctionPointer. Implementeringen av .NET Core är följande:
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;
}
Konfigurera sedan providern SQLitePCLRaw . Kontrollera att detta görs innan Microsoft.Data.Sqlite det används i din app. Undvik också att använda ett SQLitePCLRaw paketpaket som kan åsidosätta din provider.
SQLite3Provider_dynamic_cdecl
.Setup("sqlite3", new NativeLibraryAdapter("sqlite3"));
SQLitePCL.raw.SetProvider(new SQLite3Provider_dynamic_cdecl());