Provider Compatibility Matrix
This document lists available NativeData provider packages and their compatibility characteristics.
Providers
| Provider | Package | Connection Class | Identifier Quoting | Parameter Prefix | Status |
|---|---|---|---|---|---|
| SQLite | NativeData.Sqlite | SqliteConnectionFactory | "identifier" | @param | ✅ Stable |
| PostgreSQL | NativeData.Postgres | PostgresConnectionFactory | "identifier" | @param | ✅ Stable |
Dialect Details
NativeData.Sqlite
- Underlying driver:
Microsoft.Data.Sqlite - Dialect class:
SqliteSqlDialect - Identifier quoting: double quotes —
"TableName" - Parameter style:
@ParamName
NativeData.Postgres
- Underlying driver:
Npgsql - Dialect class:
PostgresSqlDialect - Identifier quoting: double quotes —
"TableName" - Parameter style:
@ParamName
AOT / Trimming Compatibility
All provider packages set IsAotCompatible and IsTrimmable via Directory.Build.props. Both SqliteConnectionFactory and PostgresConnectionFactory use only ADO.NET abstractions (DbConnection) with no runtime reflection.
Npgsql 8+ includes native AOT support. For AOT publish, ensure your application targets net8.0 or later and uses NpgsqlDataSource or basic connection APIs only.
DI Configuration
Each provider package ships a NativeDataOptions extension method for use with AddNativeData<TContext>():
// SQLite
services.AddNativeData<AppContext>(o => o.UseSqlite("Data Source=app.db"));
// PostgreSQL
services.AddNativeData<AppContext>(o => o.UsePostgres("Host=localhost;Database=mydb;Username=app;Password=secret"));
These methods set up the provider’s IDbConnectionFactory and ISqlDialect as singletons. See DI Integration for connection pooling details.
Adding a New Provider
- Create
src/NativeData.{Provider}/with:{Provider}ConnectionFactory : IDbConnectionFactory{Provider}SqlDialect : ISqlDialect
- Reference
NativeData.CoreandNativeData.Abstractions - Add to
NativeData.slnx - Add shared behavioral tests in
NativeData.Tests