This page provides an overview of the SQL database data providers in Audit.NET. These providers persist audit events to SQL database tables in JSON format. Three SQL database providers are available:
For the Entity Framework-based provider that stores audit events using EF models, see EntityFramework Data Provider.
All SQL providers follow a common pattern: they store each audit event as a row in a database table, with the event serialized as JSON in a designated column. Additional columns can store extracted metadata for efficient querying.
Sources: src/Audit.NET.SqlServer/README.md1-5 src/Audit.NET.PostgreSql/README.md1-5 src/Audit.NET.MySql/Providers/MySqlDataProvider.cs9-21
| Feature | SQL Server | PostgreSQL | MySQL |
|---|---|---|---|
| Package | Audit.NET.SqlServer | Audit.NET.PostgreSql | Audit.NET.MySql |
| Primary Key Type | Any type convertible to NVARCHAR | Any type convertible to STRING | Numeric (auto-increment) |
| JSON Column Type | NVARCHAR(MAX) | JSON, JSONB, or TEXT | TEXT or JSON |
| Schema Support | Yes | Yes | No |
| Query Methods | GetEvent() | GetEvent(), EnumerateEvents() | GetEvent() |
| Custom Columns | Yes | Yes | Yes |
| Last Updated Column | Yes | Yes | No |
| Fluent Configuration | UseSqlServer() | UsePostgreSql() | UseMySql() |
Sources: src/Audit.NET.SqlServer/README.md67-77 src/Audit.NET.PostgreSql/README.md56-70 src/Audit.NET.MySql/Providers/MySqlDataProvider.cs23-46
All SQL providers share a similar configuration structure through fluent API or direct property assignment.
Sources: src/Audit.NET.SqlServer/README.md42-53 src/Audit.NET.PostgreSql/README.md24-36 src/Audit.NET.MySql/Providers/MySqlDataProvider.cs52-64
Sources: src/Audit.NET.SqlServer/README.md67-77 src/Audit.NET.PostgreSql/Providers/PostgreSqlDataProvider.cs24-65 src/Audit.NET.MySql/Providers/MySqlDataProvider.cs23-46
All SQL providers expect specific table constraints:
SQL Server:
PostgreSQL:
MySQL:
Sources: src/Audit.NET.SqlServer/README.md94-105 src/Audit.NET.PostgreSql/SqlScript.sql1-16 test/Audit.PostgreSql.UnitTest/SqlScript.sql1-16
Custom columns allow extracting specific audit event fields into dedicated table columns for efficient querying without parsing JSON.
Sources: src/Audit.NET.PostgreSql/Providers/PostgreSqlDataProvider.cs65 src/Audit.NET.MySql/Providers/MySqlDataProvider.cs44-46
Sources: src/Audit.NET.PostgreSql/README.md34-35 test/Audit.PostgreSql.UnitTest/PostgreSqlTests.cs248-270
PostgreSQL supports three data type options for JSON storage via the DataType enumeration:
Sources: src/Audit.NET.PostgreSql/README.md68 src/Audit.NET.PostgreSql/Providers/PostgreSqlDataProvider.cs59-60
The PostgreSQL provider applies appropriate casting when inserting/updating events:
Sources: src/Audit.NET.PostgreSql/Providers/PostgreSqlDataProvider.cs391-396
All SQL providers implement standard retrieval methods from AuditDataProvider:
Sources: src/Audit.NET.PostgreSql/Providers/PostgreSqlDataProvider.cs89-165 src/Audit.NET.MySql/Providers/MySqlDataProvider.cs66-140
The PostgreSQL provider includes additional query capabilities through EnumerateEvents:
Sources: src/Audit.NET.PostgreSql/README.md106-120 src/Audit.NET.PostgreSql/Providers/PostgreSqlDataProvider.cs167-227
Each provider constructs database-specific INSERT and UPDATE commands:
PostgreSQL INSERT:
Sources: src/Audit.NET.PostgreSql/Providers/PostgreSqlDataProvider.cs259-266
PostgreSQL UPDATE:
Sources: src/Audit.NET.PostgreSql/Providers/PostgreSqlDataProvider.cs277-283
MySQL INSERT:
Sources: src/Audit.NET.MySql/Providers/MySqlDataProvider.cs142-153
Each provider manages database connections through vendor-specific connection classes:
Sources: src/Audit.NET.PostgreSql/Providers/PostgreSqlDataProvider.cs120-127
All providers follow a consistent using-statement pattern for connection lifecycle:
Sources: src/Audit.NET.PostgreSql/Providers/PostgreSqlDataProvider.cs89-103 src/Audit.NET.MySql/Providers/MySqlDataProvider.cs66-84
All SQL providers support both static configuration and dynamic per-event configuration through the Setting<T> class:
Sources: src/Audit.NET.SqlServer/README.md56-63
The Setting<T> class allows configuration values to be either static or dynamically computed:
Sources: src/Audit.NET.PostgreSql/Providers/PostgreSqlDataProvider.cs29-37 src/Audit.NET.PostgreSql/Providers/PostgreSqlDataProvider.cs398-401
The SQL providers in Audit.NET offer a straightforward approach to persisting audit events in relational databases:
AuditDataProvider interface methodsFor detailed configuration and usage of each provider, see:
Refresh this wiki