This page summarizes the most common cross-database differences to validate when using LiteOrm. Use it when you are evaluating a new provider, troubleshooting dialect behavior, or deciding whether to extend SqlBuilder.
The current docs and README files explicitly cover these primary databases:
Paging is usually the biggest compatibility hotspot.
OFFSET ... FETCHROW_NUMBER() or nested paging queriesLIMIT/OFFSETIf the target database has special paging rules, start with:
The same business intent can map to different function names across databases. Common examples include:
If you register custom Lambda translations, always validate that the generated SQL still matches the target dialect.
Recommended references:
LiteOrm.Demo\Demos\DateFormatDemo.csBulk-write behavior depends heavily on the underlying driver and provider implementation.
SqlBulkCopyMySqlBulkCopy or an equivalent high-throughput import pathIBulkProviderThat means the final performance of BatchInsertAsync depends on both LiteOrm and the configured IBulkProvider.
Different databases and drivers tolerate different numbers of SQL parameters, so ParamCountLimit matters.
Watch for cases such as:
IN (...) listsTypical mitigations:
ParamCountLimitRecommended references:
| Capability | Compatibility-sensitive point | Recommendation |
|---|---|---|
| paging | dialect syntax varies the most | validate generated paging SQL first; customize SqlBuilder if needed |
| window functions | older databases may not support them | confirm database version before enabling them |
| custom functions | names and argument shapes vary | implement database-specific translation through expression extension |
| bulk import | depends on driver and provider support | prefer native bulk capabilities when available |
| sharding | depends mainly on naming rules | standardize TableArgs conventions early |
These five checks cover most dialect differences that surface early.
If the target environment is an older Oracle deployment or another database with unusual paging rules, validate sorting + paging queries before anything else.
When troubleshooting compatibility issues, a practical order is:
SqlBuilder are neededSqlBuilderConsider a custom SqlBuilder when:
Recommended starting points:
If you are migrating between databases or supporting more than one at the same time, a pragmatic strategy is:
SqlBuilder and expression extensionsThat keeps business-layer code more stable over time.