Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. F#
  3. Rezoom.SQL

Rezoom.SQL

MITF#

An F# ORM that statically typechecks a SQL dialect and translates it to SQLite, SQL Server, and PostgreSQL backends.

GitHubGitHub
681 stars23 forks0 contributors

What is Rezoom.SQL?

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.

Target Audience

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.

Value Proposition

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.

Overview

Statically typechecks a common SQL dialect and translates it to various RDBMS backends

Use Cases

Best For

  • F# applications requiring type-safe database access
  • Teams needing flexible, non-linear database migration workflows
  • Projects targeting multiple SQL database backends (SQLite, SQL Server, PostgreSQL)
  • Developers wanting compile-time validation of SQL queries
  • Cross-language .NET projects where F# defines data access layers consumed by C# or VB.NET
  • Applications that benefit from automatic query batching and caching within transactions

Not Ideal For

  • Projects using databases not supported by Rezoom.SQL, such as MySQL or Oracle
  • Teams that rely heavily on dynamic SQL generation or complex query builders requiring runtime flexibility
  • Applications where database schema changes are made directly on live databases without migration scripts
  • .NET projects primarily in C# or VB.NET without plans to integrate F# for data access layers

Pros & Cons

Pros

Compile-Time SQL Validation

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.

Multi-Database Portability

Translates its SQL dialect to SQLite, SQL Server, and PostgreSQL, enabling code reuse across different backends without rewriting queries.

Schema Inference from Migrations

Infers database schema directly from migration scripts, allowing iterative model changes without a live database, illustrated in the animated GIF of model updates.

Cross-Language .NET Compatibility

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.

Automatic Batching and Caching

When integrated with Rezoom, it provides automatic query batching and caching within transactions, reducing database round trips, detailed with execution diagrams in the README.

Cons

F#-Centric Design Lock-in

Deeply integrated with F# compiler and type provider, making adoption difficult for projects not using F# or teams unfamiliar with functional programming concepts.

Custom SQL Dialect Limitations

Relies on its own SQL dialect, which may not support all advanced database-specific features or stored procedures, limiting flexibility compared to raw SQL.

Migration Script Dependency

Schema inference depends entirely on migration scripts; errors or omissions in scripts can lead to incorrect type checking or runtime failures, requiring careful maintenance.

Smaller Ecosystem and Tooling

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.

Frequently Asked Questions

Quick Stats

Stars681
Forks23
Contributors0
Open Issues18
Last commit4 months ago
CreatedSince 2017

Tags

#type-provider#orm#compiler#typechecker#sql-server#dotnet#database-migrations#postgresql#sqlserver#sqlite#fsharp#tsql#static-analysis#sql

Built With

F
F#
.
.NET

Included in

F#1.4k
Auto-fetched 1 day ago

Related Projects

FSharp.DataFSharp.Data

F# Data: Library for Data Access

Stars875
Forks281
Last commit8 days ago
SQLProviderSQLProvider

A general F# SQL database erasing type provider, supporting LINQ queries, schema exploration, individuals, CRUD operations and much more besides.

Stars627
Forks148
Last commit5 days ago
SwaggerProviderSwaggerProvider

F# generative Type Provider for Swagger

Stars278
Forks60
Last commit6 days ago
R Type ProviderR Type Provider

An F# type provider for in-process R interop

Stars244
Forks68
Last commit2 months ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub