An F# ORM that statically typechecks a SQL dialect and translates it to SQLite, SQL Server, and PostgreSQL backends.
Rezoom.SQL is an F# ORM that uses a generative type provider to statically typecheck a SQL dialect and translate it to various database backends like SQLite, SQL Server, and PostgreSQL. It solves the problem of runtime SQL errors by validating queries at compile time and inferring schema from migration scripts. This allows developers to write type-safe database queries directly in F# with immediate feedback.
F# developers building applications that interact with SQL databases, particularly those who value type safety and want to catch SQL errors during compilation rather than at runtime. It also suits teams needing flexible migration ordering and cross-language compatibility with .NET ecosystems.
Developers choose Rezoom.SQL for its deep integration with the F# compiler, which provides static type checking for SQL, reducing debugging time and ensuring correctness. Its ability to generate .NET types usable from other languages and support for multiple database backends offers flexibility and portability not always found in traditional ORMs.
Statically typechecks a common SQL dialect and translates it to various RDBMS backends
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Catches over 45 error types at compile time, including mistyped table names and type mismatches, as shown in the README's error examples like GROUP BY clause issues.
Translates its SQL dialect to SQLite, SQL Server, and PostgreSQL, enabling code reuse across different backends without rewriting queries.
Infers database schema directly from migration scripts, allowing iterative model changes without a live database, illustrated in the animated GIF of model updates.
Uses a generative type provider to create plain .NET types consumable from C# or VB.NET, with options for C#-style nullable types, as noted in the features.
When integrated with Rezoom, it provides automatic query batching and caching within transactions, reducing database round trips, detailed with execution diagrams in the README.
Deeply integrated with F# compiler and type provider, making adoption difficult for projects not using F# or teams unfamiliar with functional programming concepts.
Relies on its own SQL dialect, which may not support all advanced database-specific features or stored procedures, limiting flexibility compared to raw SQL.
Schema inference depends entirely on migration scripts; errors or omissions in scripts can lead to incorrect type checking or runtime failures, requiring careful maintenance.
As a niche F# ORM, it has a smaller community and fewer third-party extensions compared to established options like Entity Framework, which may impact long-term support.