Skip to content
Shiny.NET

Getting Started

EF Core covers the core of data access well, but some features are missing on some providers and others are missing everywhere. SpatiaLite can’t run on iOS or Android, so spatial queries on SQLite stop at the desktop. Temporal tables exist only on SQL Server. There is no outbox, no versioned seeding, and no safe way to give an LLM access to a DbContext. These packages fill those gaps. Each one is independent, plugs in through EF’s own extension points (interceptors, conventions, the migrations SQL generator, query translation), and never asks you to derive from a base DbContext.

They are ported from Shiny DocumentDb, where every one of these features shipped first.

GitHub GitHub stars for shinyorg/efcore
Frameworks
.NET
.NET MAUI
ASP.NET
Operating Systems
Android
iOS
Windows
Package Description
NuGet package Shiny.EntityFrameworkCore.Sqlite.Mobile Spatial, vector and full-text search for SQLite. Spatial uses NetTopologySuite with an R*Tree index instead of mod_spatialite, vectors use sqlite-vec, full-text uses FTS5. Works on iOS, Android, Mac Catalyst and desktop
NuGet package Shiny.EntityFrameworkCore.Outbox Transactional outbox: messages are enqueued in your SaveChanges transaction and delivered by a background processor with retries, dead letters and ordered partitions
NuGet package Shiny.EntityFrameworkCore.Temporal Temporal history on SQLite, PostgreSQL, SQL Server and MySQL: History, AsOf, AsOfAll, Restore, JSON Patch diffs and per-actor audit trails
NuGet package Shiny.EntityFrameworkCore.AI AI tools for Microsoft.Extensions.AI over a DbContext. Each entity has a scope that is always applied, so an LLM only sees the rows it is allowed to
NuGet package Shiny.EntityFrameworkCore.Mcp An MCP server over the same scoped tools, plus schema and sample resources and prompts
NuGet package Shiny.EntityFrameworkCore.Seeding Versioned seeding: each seeder runs once, and runs again when you bump its version. It runs exactly once even when several app instances start together
NuGet package Shiny.EntityFrameworkCore.Aspire.Hosting Aspire seed gate: an AppHost seeds a database on first setup or on a deliberate recreate, never on an ordinary restart
  • .NET 10 and EF Core 10.
  • The outbox, temporal history, AI tools and seeding support SQLite, PostgreSQL, SQL Server and MySQL (MySQL via MySql.EntityFrameworkCore, because Pomelo has no EF 10 build yet). The Sqlite.Mobile package targets SQLite only.
  • Building a MAUI app with maps, semantic search or a search box? Start with SQLite spatial.
  • Publishing domain events from a web API? Start with the outbox.
  • Need an audit trail or “what did this look like last Tuesday”? Start with temporal history.
  • Letting an assistant query your data? Start with AI tools.