Supported Databases - pengdows/pengdows.crud GitHub Wiki
pengdows.crud is designed to work with a wide range of relational databases that conform to core ADO.NET and ANSI SQL standards. It supports many databases out-of-the-box and allows workarounds for others, provided certain criteria are met.
The following databases are directly tested and supported:
- Full support, including stored procedures, indexed views, and named parameters.
- Special settings are applied for indexed view compatibility.
- Use KeepAlive for LocalDB
- Changes to default behavior for SQL Server
- Full support.
- Uses standard ANSI syntax and behaves well with all major features.
- Fully supported with enforced SERIALIZABLE isolation level.
- Treated as a special case in transaction logic.
- Supported with known quirks:
- NUMBER type coercion is and handled automatically.
- Stored procedure call syntax is nonstandard (`BEGIN ... END`) and injected accordingly
- Fully supported with overrides:
- Must be configured to conform to ANSI SQL standards (e.g., using single quotes for strings)
- Handles MySQLβs quirk where date fields return as strings
- Changes to default behavior for MySQL
- Fully supported with overrides:
- Must be configured to conform to ANSI SQL standards (e.g., using single quotes for strings)
- Handles MySQLβs quirk where date fields return as strings
- Changes to default behavior for MariaDb
- Supported using fallback metadata (simulated GetSchema)
- Great for lightweight testing and dev scenarios
- Behaves like a file-based DB
- Require SingleConnection for in memory
- or SingleWriter for in files.
- Tested and supported via container (does not require embedded mode)
For a database to be supported, it must:
1. Have a .NET ADO.NET provider that is current and stable 2. Support `DbProviderFactory` creation and `DbConnection.GetSchema("DataSourceInformation")` 3. Use ANSI-standard SQL for SELECT, INSERT, UPDATE, DELETE 4. Support named (using @ or :) or positional (?) parameters 5. Have appropriate object identifier quoting (`"`, `[]`, or backticks) 6. Handle isolation levels in a predictable way (preferably with `READ COMMITTED` or `REPEATABLE READ`) 7. (Optional) Support stored procedures and allow programmatic call syntax detection (e.g., EXEC, CALL, BEGIN...END)
Databases that lack one or more of the above may still work **with manual configuration**:
- TimesTen (I have already worked around the ExecuteScalar problem)
- Older versions of Access (requires SingleConnection or SingleWriter mode)
- Any database where ANSI joins or parameterization are not supported
pengdows.crud enforces best practices by design. If a database violates those practices in default mode, it can often still be supported through overrides, compatibility settings, and connection-level configuration.
If youβre using an uncommon database and want to try it, start by:
- Checking your ADO.NET provider capabilities
- Setting session options through `DatabaseContext.SessionSettings`
- Logging the SQL output to catch dialect issues