Michael's still building — free, for .NET.

Notes on building
fast, honest data access.

Engineering write-ups, release notes, and tutorials from the team behind
RepoDB — a production-ready data access platform for .NET applications.

Early Access
Ends

RepoDB Desktop Studio

One desktop app to explore your databases, manage definitions, and monitor your applications — in the look that suits you.

Read the announcement
RepoDB Desktop Studio in the modern style
Style modern

Pick a style or theme
Explore the modules

    Pick your database

    17 databases, one consistent API

    Ahtola

    A pure managed, SQLite-compatible database engine for .NET.

    AuroraDB

    Amazon Aurora's PostgreSQL-compatible edition, a managed cloud-native relational database built on AWS infrastructure.

    ClickHouse

    An open-source, column-oriented database built for real-time analytics at scale.

    CockroachDB

    A distributed SQL database built for resilience and horizontal scale, wire-compatible with PostgreSQL.

    DB2

    IBM's enterprise-grade relational database for mission-critical workloads.

    DuckDB

    An embedded, in-process analytical database engine built for fast, local analytics.

    EnterpriseDB

    A PostgreSQL-based platform with added enterprise features and support.

    Firebird

    A lightweight, open-source relational database with strong SQL standard compliance.

    MariaDB

    A community-driven, open-source fork of MySQL with enhanced performance features.

    MySQL

    One of the world's most popular open-source relational databases.

    Oracle

    A powerful, enterprise-grade relational database used across large organizations.

    PostgreSQL

    An advanced open-source object-relational database known for reliability and extensibility.

    SAP HANA

    An in-memory, column-oriented database platform built for real-time analytics.

    SQL Server

    Microsoft's relational database management system for enterprise applications.

    SQLite

    A self-contained, serverless database engine embedded directly in applications.

    Turso

    An in-process, SQLite-compatible database engine written in Rust.

    Vertica

    A columnar analytics database built for large-scale data warehousing.

    One platform, every layer of your data access.

    As an end-to-end
    data platform.

    RepoDB is more than a query runner — it connects to any database, powers a smarter ORM, moves data at scale, and reports on itself, all through one consistent API.

    RepoDB connectors: data sources including databases, ODBC, and files flow through .NET compliant ADO.NET providers and wired-protocol connectors to power the ORM and Data Productivity Platform RepoDB connectors: data sources including databases, ODBC, and files flow through .NET compliant ADO.NET providers and wired-protocol connectors to power the ORM and Data Productivity Platform

    More databases, no boundaries

    RepoDB connects through native, wired-protocol, and ODBC providers — one ADO.NET compliant connection powers the whole ORM and Data Productivity Platform.

    RepoDB ORM: a code sample querying users with connection.QueryAsync, alongside CRUD, batch, bulk, and multi-database support for SQL Server, PostgreSQL, MySQL, and Oracle RepoDB ORM: a code sample querying users with connection.QueryAsync, alongside CRUD, batch, bulk, and multi-database support for SQL Server, PostgreSQL, MySQL, and Oracle

    A smarter ORM for real applications

    Simple, flexible data access for .NET — CRUD, batch, and bulk operations built for performance, on any database.

    RepoDB Data Productivity Platform: a code sample copying data between connections, alongside move, copy, calculate, and migrate operations across SQL Server, PostgreSQL, MySQL, and Oracle RepoDB Data Productivity Platform: a code sample copying data between connections, alongside move, copy, calculate, and migrate operations across SQL Server, PostgreSQL, MySQL, and Oracle

    A data productivity platform

    Move, copy, calculate, and migrate data across databases at scale — using the same API you already know.

    RepoDB default telemetry: live dashboard showing operations per second, average latency, and apps tracked, flowing from your app through a collector into PostgreSQL and Grafana RepoDB default telemetry: live dashboard showing operations per second, average latency, and apps tracked, flowing from your app through a collector into PostgreSQL and Grafana

    Default telemetry, out of the box

    Every RepoDB app ships with a built-in collector for ops/sec, latency, and query volume — stored in PostgreSQL, visualized live in Grafana, zero setup.

    19 features, zero bolt-ons.

    Everything you need,
    built in.

    From batch and bulk operations to caching, tracing, and type mapping — the capabilities that make RepoDB a complete data access layer, not just a query runner.

    Features

    19 core features of the library

    Batch Operations

    Packing thousands of single-row statements into a handful of round trips, without changing a single call site.

    Bulk Operations

    Set-based inserts, updates, deletes, and merges that bypass row-by-row round trips entirely.

    Caching

    A key/value layer in front of your read operations that skips the round trip entirely once something is already in memory.

    Class Handlers

    Intercepts the moment a whole entity is read from or written to the database, for validation or side effects at the model level.

    Class Mapping

    Attribute-based control over how a class and its properties line up with tables, columns, keys, and handlers.

    Connection Persistency

    Controls whether a repository opens a fresh connection per call or holds one open for its entire lifetime.

    Dynamics

    CRUD against a literal table name and anonymous objects, for the calls that don't warrant a full entity model.

    Enumeration

    Enum properties round-trip as strings by default, with an escape hatch to force numeric storage or fully custom handling.

    Expression Trees

    Four different ways to express a filter, from a plain anonymous object to fully composable query trees.

    Hints

    Table hints like NOLOCK or TABLOCK, passed straight through to SQL Server without dropping into raw SQL.

    Implicit Mapping

    Attribute-free mapping for class names, columns, keys, and types, configured entirely through mapper classes.

    Multiple Query

    Fetch a parent and its related rows in a single round trip instead of one query per relationship.

    Property Handlers

    Custom, per-property conversion logic for the cases where the default type mapping isn't enough.

    Repositories

    A dedicated class between your application and the database, so every data access call funnels through one place.

    Targeted Operations

    Naming exactly which columns an operation should touch, without a change tracker doing the diffing behind your back.

    Telemetry

    Opt-in, drop-in telemetry that captures every operation and publishes it to a collector and Grafana dashboard — no custom trace class required.

    Tracing

    Hooks before and after every execution for logging, auditing, or cancelling a command outright.

    Transaction

    Ordinary ADO.NET transactions, shared across as many repository or connection calls as you need.

    Type Mapping

    Maps a .NET CLR type, or a single property, to its exact equivalent database type.