npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

extensions.unity.bundle.efcore.sqlite

v0.0.4

Published

Bundle project that includes references on EntityFrameworkCore and SQLite set of packages to provide ready to go solution for Windows, MacOS, Android, iOS platforms.

Downloads

191

Readme

Unity + EFCore + SQLite = ❤️

npm openupm License Stand With Ukraine

Ready to go bundle package that includes references on EntityFrameworkCore and SQLitePCLRaw packages that just works in this combination for the next platforms:

Supports AOT an JIT compilation. For AOT it uses nested link.xml file to exclude required classes from stripping.

Supported project settings

Platform

  • ✔️ Windows
  • ✔️ Android
  • ✔️ iOS
  • ✔️ MacOS
  • Others not yet tested

Scripting backend

  • Mono
  • ✔️ IL2CPP

API Compatibility

  • .NET Framework
  • ✔️ .NET Standard 2.0
  • ✔️ .NET Standard 2.1

Usage

Call the function once at app startup. Important to do that before opening SQLite connection.

SQLitePCLRaw.Startup.Setup();

Installation

openupm add extensions.unity.bundle.efcore.sqlite

Alternative usage

1. Create SQLiteContext class

using Microsoft.EntityFrameworkCore;

public class SQLiteContext : DbContext
{
    // sample table of levels in your database
    public DbSet<LevelData> Levels { get; set; }

    public SQLiteContext() : base() { }
    public SQLiteContext(DbContextOptions<SQLiteContext> options) : base(options) { }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        builder.Entity<LevelData>();
    }
}

2. Create SQLiteContextFactory class

using Microsoft.EntityFrameworkCore;

public class SQLiteContextFactory : EFCoreSQLiteBundle.SQLiteContextFactory<SQLiteContext>
{
    protected override string DesignTimeDataSource => "replace it with path to design time database";

    public SQLiteContextFactory() : base(UnityEngine.Application.persistentDataPath, "data.db") { }

    protected override SQLiteContext InternalCreateDbContext(DbContextOptions<SQLiteContext> optionsBuilder)
        => new SQLiteContext(optionsBuilder);
}

The EFCoreSQLiteBundle.SQLiteContextFactory class under the hood executes SQLitePCLRaw.Startup.Setup(); for proper SQLite setup depends on the current platform.

3. Create database context

var contextFactory = new SQLiteContextFactory();
var dbContext = contextFactory.CreateDbContext();

// use it for data manipulations
// sample:
var level_1 = dbContext.Levels.FirstOrDefault(level => level.id == 1);

Helpful information

Read more how to use EntityFrameworkCore. My favorite approach is Code First. Please keep in mind. Because of Unity's .NET Standard 2.1 restrictions we are only limited to use the old version of EntityFrameworkCore 5.0.17. Newer versions require newer .NET version which Unity doesn't support yet. Anyway the version 5.0.17 is a good one for sure!