NativeData Status and Roadmap
The live backlog, milestone progress, and prioritized work items are tracked in the NativeData GitHub Project.
Release execution guidance: see release-checklist.md.
Vision
NativeData aims to provide a nativeAOT/trimming-friendly ORM for .NET 10 by favoring:
- compile-time metadata over runtime reflection
- explicit provider wiring over dynamic provider loading
- predictable SQL generation over broad dynamic conventions
Whatβs Implemented
| Package | Status |
|---|---|
NativeData.Abstractions | β
Stable β contracts, IRepository<T>, ISqlDialect, IEntityMap<T> |
NativeData.Core | β
Stable β SqlRepository<T>, DbCommandExecutor, NativeDataContext, NativeDataQuery<T> |
NativeData.Sqlite | β Stable β SQLite provider (Microsoft.Data.Sqlite) |
NativeData.Postgres | β Stable β PostgreSQL provider (Npgsql) |
NativeData.Generators | β
Stable β Roslyn source generator, emits IEntityMap<T> at compile time |
NativeData.Analyzers | β Stable β 6 diagnostic rules (ND0001βND0004, ND1001βND1002) |
NativeData.Extensions.DependencyInjection | β
Stable β AddNativeData<TContext>(), scoped context, DI integration |
See providers.md for the provider compatibility matrix.
Roadmap
The full milestone backlog, priorities, and work item status are tracked in the NativeData GitHub Project.
| Milestone | Focus | Status |
|---|---|---|
| v0.2.0 | Foundation hardening β XML docs, CI, edge-case tests | β Done |
| v0.3.0 | Source-generated IEntityMap<T> end-to-end | β Done |
| v0.4.0 | Analyzer pack expansion (ND0001βND1002) | β Done |
| v0.5.0 | Second provider β PostgreSQL (Npgsql) | β Done |
| v0.6.0 | LINQ-style fluent query builder (NativeDataQuery<T>) | β Done |
| v0.7.0 | NativeDataContext + DI integration (AddNativeData<T>) | β Done |
| v1.0.0 | API freeze, full docs, production baseline | π In Progress |
Architecture
Abstractionsβ contracts isolated from runtime implementationCoreβ ADO.NET implementation, provider-agnosticSqlite/Postgresβ provider-specific behavior in dedicated packagesGenerators/Analyzersβ compile-time tooling, no runtime overheadsamples/β AOT publish smoke tests and provider samples
Non-Goals
NativeData intentionally avoids in core:
- runtime expression compilation (LINQ translation is source-generated or compile-time-bounded)
- runtime assembly scanning or dynamic provider loading
- proxy-based change tracking (incompatible with AOT/trimming)
- migrations