Plugin.Maui.LocalStore
1.0.0
See the version list below for details.
dotnet add package Plugin.Maui.LocalStore --version 1.0.0
NuGet\Install-Package Plugin.Maui.LocalStore -Version 1.0.0
<PackageReference Include="Plugin.Maui.LocalStore" Version="1.0.0" />
<PackageVersion Include="Plugin.Maui.LocalStore" Version="1.0.0" />
<PackageReference Include="Plugin.Maui.LocalStore" />
paket add Plugin.Maui.LocalStore --version 1.0.0
#r "nuget: Plugin.Maui.LocalStore, 1.0.0"
#:package Plugin.Maui.LocalStore@1.0.0
#addin nuget:?package=Plugin.Maui.LocalStore&version=1.0.0
#tool nuget:?package=Plugin.Maui.LocalStore&version=1.0.0
Plugin.Maui.LocalStore
A Room-style app-document facade for .NET MAUI on Android, iOS, Mac Catalyst, and Windows. One collection API (IStoreCollection<T>). The host picks SQLite or NuvexaDB.
Switching backends does not migrate data. You get two files (app.db vs app.nvx).
This is not JobQueue or RetryQueue (durable jobs). It is not OfflineSync (sync + conflicts). It is not androidx.room and not a replacement for using Nuventra.NuvexaDB directly.
host
↓
ILocalStore / IStoreCollection<T>
↓ ↓
SQLite NuvexaDB
app.db app.nvx
Install
dotnet add package Plugin.Maui.LocalStore
Target frameworks: net10.0, net10.0-android, net10.0-ios, net10.0-maccatalyst, net10.0-windows10.0.19041.0 (Windows TFM when packed on Windows).
Quick start
builder.UseMauiApp<App>()
.UseMauiLocalStore(o =>
{
o.Backend = StoreBackend.Nuvexa; // or StoreBackend.Sqlite
o.Path = Path.Combine(FileSystem.AppDataDirectory,
o.Backend == StoreBackend.Nuvexa ? "app.nvx" : "app.db");
o.EncryptionKey = key; // Nuvexa only; ignored on SQLite in 1.0
});
var users = LocalStore.Current.GetCollection<Person>("users");
await users.InsertAsync(new Person { Name = "Ada", Age = 36, City = "London" });
var adults = await users.FindAsync(
StoreFilter.Gte("Age", 21),
new StoreQuery { SortBy = "Name", Limit = 20 });
POCOs need a public string Id (nullable is fine). Filters use top-level property names. Nested address.city is Nuvexa-only; keep a City property on the POCO for the shared API.
Nuvexa-only NQL:
if (LocalStore.Current is INuvexaLocalStore nuvexa)
{
await nuvexa.ExecuteNqlAsync("db.users.find({ age: { $gte: 21 } })");
}
What 1.0 does not do
- Automatic
.db↔.nvxmigration - Encrypted SQLite (SQLCipher)
- Source-generated DAOs or raw SQL on the shared interface
- Sibling
PackageReferenceto OfflineSync / JobQueue / FileVault
Sample
samples/Plugin.Maui.LocalStore.Sample — picker for SQLite vs Nuvexa, same Person tour.
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-android36.0 is compatible. net10.0-browser was computed. net10.0-ios was computed. net10.0-ios26.0 is compatible. net10.0-maccatalyst was computed. net10.0-maccatalyst26.0 is compatible. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. net10.0-windows10.0.19041 is compatible. |
-
net10.0
- Nuventra.NuvexaDB (>= 1.0.5)
- sqlite-net-base (>= 1.9.172)
- SQLitePCLRaw.bundle_e_sqlite3 (>= 3.0.3)
-
net10.0-android36.0
- Nuventra.NuvexaDB (>= 1.0.5)
- sqlite-net-base (>= 1.9.172)
- SQLitePCLRaw.bundle_e_sqlite3 (>= 3.0.3)
-
net10.0-ios26.0
- Nuventra.NuvexaDB (>= 1.0.5)
- sqlite-net-base (>= 1.9.172)
- SQLitePCLRaw.bundle_e_sqlite3 (>= 3.0.3)
-
net10.0-maccatalyst26.0
- Nuventra.NuvexaDB (>= 1.0.5)
- sqlite-net-base (>= 1.9.172)
- SQLitePCLRaw.bundle_e_sqlite3 (>= 3.0.3)
-
net10.0-windows10.0.19041
- Nuventra.NuvexaDB (>= 1.0.5)
- sqlite-net-base (>= 1.9.172)
- SQLitePCLRaw.bundle_e_sqlite3 (>= 3.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Initial 1.0.0: ILocalStore / IStoreCollection with host-selected SQLite or NuvexaDB backends.