GithubHelp home page GithubHelp logo

seomunkyeongseok / indexeddb.blazor Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jinjinov/indexeddb.blazor

0.0 0.0 0.0 48 KB

A Blazor library for accessing IndexedDB

License: MIT License

HTML 5.50% C# 94.50%

indexeddb.blazor's Introduction

IndexedDB.Blazor

An easy way to interact with IndexedDB and make it feel like EF Core but async.

Version history

  • 1.1.1:
    • Upgraded from .NET Core 3.0.0-preview to .NET Core 3.2.1
    • Upgraded form netstandard2.0 to netstandard2.1
    • Upgraded form C# 7.3 to C# 8.0
    • Upgraded TG.Blazor.IndexedDB from 0.9.0-beta to 1.5.0-preview
    • Changed namespace Blazor.IndexedDB.Framework to namespace IndexedDB.Blazor
    • Changed private IndexedDBManager connector; to protected IndexedDBManager connector; in IndexedDb
    • Changed IndexedSet<T> : IEnumerable<T> to IndexedSet<T> : ICollection<T>
  • 1.0.1:

NuGet installation

The NuGet package is at: https://www.nuget.org/packages/IndexedDB.Blazor

Either install it from command line:

PM> Install-Package IndexedDB.Blazor

Or include it in your project file:

<PackageReference Include="IndexedDB.Blazor" Version="1.1.1" />

Features

  • Connect and create database
  • Add record
  • Remove record
  • Edit record

How to use

  1. Add TG.Blazor.IndexedDB/indexedDb.Blazor.js to your index.html
<script src="_content/TG.Blazor.IndexedDB/indexedDb.Blazor.js"></script>
  1. Register IndexedDbFactory as a service.
services.AddSingleton<IIndexedDbFactory, IndexedDbFactory>();
  • IIndexedDbFactory is used to create the database connection and will create the database instance for you.

  • IndexedDbFactory requires an instance of IJSRuntime which should normally already be registered.

  1. Create any code first database model and inherit from IndexedDb. Only properties with the type IndexedSet<> will be used, any other properties will be 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.
public class Person
{
  [System.ComponentModel.DataAnnotations.Key]
  public long Id { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }
}
  1. 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

To remove an element it is faster to use an already created reference. You should also be able to 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

Original license.

Licensed under the MIT license.

indexeddb.blazor's People

Contributors

jinjinov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.