Reshiru.Blazor.IndexedDB.Framework
1.0.1
dotnet add package Reshiru.Blazor.IndexedDB.Framework --version 1.0.1
NuGet\Install-Package Reshiru.Blazor.IndexedDB.Framework -Version 1.0.1
<PackageReference Include="Reshiru.Blazor.IndexedDB.Framework" Version="1.0.1" />
paket add Reshiru.Blazor.IndexedDB.Framework --version 1.0.1
#r "nuget: Reshiru.Blazor.IndexedDB.Framework, 1.0.1"
// Install Reshiru.Blazor.IndexedDB.Framework as a Cake Addin #addin nuget:?package=Reshiru.Blazor.IndexedDB.Framework&version=1.0.1 // Install Reshiru.Blazor.IndexedDB.Framework as a Cake Tool #tool nuget:?package=Reshiru.Blazor.IndexedDB.Framework&version=1.0.1
<img src="https://github.com/Reshiru/Blazor.IndexedDB.Framework/blob/master/logo.svg" height="28px"> Blazor.IndexedDB.Framework
An easy way to interact with IndexedDB and make it feel like EFCore but async.
NuGet installation
PM> Install-Package Reshiru.Blazor.IndexedDB.Framework
Current features
- Connect and create database
- Add record
- Remove record
- Edit record
Planned features or optimizations
- FK implementation
- Optimize change tracker (currently using snapshotting mechanism based using hashes)
- Remove PK dependencies from IndexedSet
- Versioning (eg. merging database)?
How to use
- In your startup.cs file add
services.AddSingleton<IIndexedDbFactory, IndexedDbFactory>();
IIndexedDbFactory is used to create your database connection and will create the database instance for you. IndexedDbFactory requires an instance IJSRuntime, should normally already be registered.
- Create any code first database model you'd like to create and inherit from IndexedDb. (Only properties with the type IndexedSet<> will be used, any other properties are beeing ignored)
public class ExampleDb : IndexedDb
{
public ExampleDb(IJSRuntime jSRuntime, string name, int version) : base(jSRuntime, name, version) { }
public IndexedSet<Person> People { get; set; }
}
- Your model (eg. person) should contain an Id property or a property marked with the key attribute.
[System.ComponentModel.DataAnnotations.Key]
- Example
public class Person
{
[Key]
public long Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
- Now you can start using your database. (Usage in razor via inject: @inject IIndexedDbFactory DbFactory)
Adding records
using (var db = await this.DbFactory.Create<ExampleDb>())
{
db.People.Add(new Person()
{
FirstName = "First",
LastName = "Last"
});
await db.SaveChanges();
}
Removing records
Note: To remove an element it is faster to use a already created reference. You should be able to also remove an object only by it's id but you have to use the .Remove(object) method (eg. .Remove(new object() { Id = 1 }))
using (var db = await this.DbFactory.Create<ExampleDb>())
{
var firstPerson = db.People.First();
db.People.Remove(firstPerson);
await db.SaveChanges();
}
Modifying records
using (var db = await this.DbFactory.Create<ExampleDb>())
{
var personWithId1 = db.People.Single(x => x.Id == 1);
personWithId1.FirstName = "This is 100% a first name";
await db.SaveChanges();
}
License
Licensed under the MIT license.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.AspNetCore.Components.Browser (>= 3.0.0-preview6.19307.2)
- TG.Blazor.IndexedDB (>= 0.9.0-beta)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Reshiru.Blazor.IndexedDB.Framework:
Repository | Stars |
---|---|
ArduPilot/MissionPlanner
Mission Planner Ground Control Station for ArduPilot (c# .net)
|