README.md

August 21, 2026 ยท View on GitHub


A production-ready data access platform for .NET applications.

RepoDB is a high-performance data productivity platform for .NET developers. At its core is the popular hybrid-ORM library for .NET with clean and easy APIs.

It provides the flexibility to work the way you want โ€” all through the IDbConnection interface. Write raw SQL when you need absolute control, or use the fluent APIs for more productivity, and switch seamlessly between both without sacrificing performance or maintainability.

Why RepoDB?

RepoDB solves a complex problem in the .NET data access space: making bulk operations simple. It is designed to efficiently move millions of records across different database providers. Imagine migrating massive datasets from legacy databases to modern, cloud-native platforms โ€” efficiently, reliably, and with high performance.

As a Productivity Platform

It goes beyond the ORM with enterprise-grade capabilities for building, operating, and scaling with confidence:

  • ๐Ÿ“ฆ Bulk Operations โ€” High-performance bulk inserts, updates, merges, and deletes built for demanding production workloads.
  • ๐Ÿ”„ Data Replication โ€” Scalable data movement and synchronization across multiple database platforms.
  • ๐Ÿ“Š Telemetry โ€” Immediate visibility into execution times, failures, and application behavior, with minimal configuration.

As a Hybrid-ORM

It stays close to the metal while remaining easy to use:

  • ๐Ÿ‘Œ Easy to Use โ€” All operations are extension methods on IDbConnection. Open a connection and you're ready to go.
  • ๐Ÿš€ High Performance โ€” Compiled expressions are cached and reused. RepoDB understands your schema to generate the most efficient execution path ahead of time.
  • ๐Ÿง  Memory Efficient โ€” Object properties, execution contexts, mappings, and SQL statements are extracted once and reused throughout the lifetime of your application.
  • ๐Ÿ”€ Hybrid โ€” Use fluent methods for everyday CRUD, drop down to raw SQL for complex queries, or mix both โ€” all within the same connection.
  • ๐Ÿ† Battle-Tested โ€” Backed by thousands of unit and integration tests, and used in production systems worldwide.
  • ๐Ÿ†“ Always Free โ€” Apache 2.0 licensed, forever open source.

As a Universal Connector

It bridges different database systems with a single, unified connectivity layer:

  • ๐Ÿ”Œ Universal Connectivity โ€” Works with any provider that implements IDbConnection, from SQL Server and PostgreSQL to ClickHouse, DB2, Oracle, and more.
  • ๐ŸŒ‰ Cross-Provider Data Movement โ€” Move data between different database engines without writing hand-rolled conversion logic.
  • ๐Ÿงฉ Consistent API Surface โ€” The same fluent methods and conventions work identically regardless of the underlying provider.
  • โš™๏ธ Provider-Native Optimizations โ€” Each connector is tuned to exploit the bulk and native capabilities of its target database.

Roadmap

RepoDB is evolving from an ORM into a broader data productivity platform, with Data Engineering capabilities โ€” moving data between providers, on-premise or cloud-native โ€” on the roadmap.

Packages and Build Status

RepoDB ships as a core package plus provider-specific packages for each supported database, with optional bulk-operations add-ons.

See the full package list and build status.

Get Started

Choose your database and follow the quick-start guide:

Explore individual features in the documentation.

Supported Databases

Raw SQL execution methods work with any ADO.NET-compatible provider:

Fluent operations (Query, Insert, Merge, Delete, Update, and more) are supported for DB providers mentioned at get-started section.

Type Coercion

RepoDB uses ADO.NET's native coercion by default, keeping type mismatches visible and explicit. To enable automatic conversion:

GlobalConfiguration
    .Setup(new Options.GlobalConfigurationOptions()
    {
        ConversionType = ConversionType.Automatic
    })
    .UseSqlServer();

How RepoDB Compares

RepoDB sits between a micro-ORM and a full ORM. Each tool below makes different tradeoffs โ€” pick the one that fits your project:

RepoDBDapperEntity Framework
Abstraction levelโœ… Hybrid โ€” fluent CRUD + raw SQLโŒ Micro-ORM โ€” raw SQL mappingโœ… Full ORM โ€” LINQ, change tracking
Fluent CRUD APIโœ… Yes (Insert, Query, Update, Delete, Merge, more)โŒ No โ€” SQL per callโœ… Yes, via LINQ/DbSet
Raw SQLโœ… Yes, mixed freely with fluent callsโœ… Yes โ€” its core modelโœ… Yes, via FromSql
Change trackingโŒ NoneโŒ Noneโœ… Yes
MigrationsโŒ None built-inโŒ None built-inโœ… Yes (EF Migrations)
Native Bulkโœ… Built-in, cross-providerโŒ Via extensionsโŒ Via extensions/third-party
Insights / telemetryโœ… Built-in (RepoDb.Telemetry.Default)โŒ None built-in โ€” manual or third-party (e.g. MiniProfiler)โœ… Built-in logging/interceptors; OTel via community packages
Performanceโœ… Close to raw ADO.NETโœ… Close to raw ADO.NETโŒ Overhead from tracking/materialization
Best fitโœ… EF-like productivity without losing SQL controlโœ… Thinnest possible SQL-to-object mapperโœ… Rich object graphs, LINQ, migrations

Dapper and Entity Framework are both excellent, mature tools โ€” this reflects design tradeoffs, not a ranking.

Telemetry

RepoDB includes opt-in, drop-in telemetry via RepoDb.Telemetry.Default. Enable it once at startup and every operation (Insert, Query, Update, Delete, etc.) is captured and published to your insights collector automatically โ€” no custom ITrace required.

It comes with great and simple dashboards visualization.

Simply docker compose up -d the docker-compose.yml and .env files and integrate your code.

GlobalConfiguration
    .Setup(new GlobalConfigurationOptions { UseRegisteredGlobalTraces = true })
    .UseDefaultTelemetry(new DefaultTelemetryOption("<YOUR_APPLICATION_NAME>")
    {
        Host = "https://your-collector-host",
        ApiKey = "YOUR_API_KEY",
        Group = "<YOUR_APPLICATION_GROUP>",
        Frequency = TimeSpan.FromSeconds(1)
    });

It's intentionally lightweight rather than OTel-based, keeping RepoDB's thin, fast footprint intact. See the package README for configuration options, the full OTel rationale, and the roadmap.

Contributions

We welcome contributions of all kinds โ€” code, docs, bug reports, and ideas.

Community

Read our contributing page for more.

Resources

Contributors

Credits

Thanks to all contributors and to Scott Hanselman for featuring RepoDB.

Tools and projects that make RepoDB possible: GitHub, Microsoft Teams, Moq, NuGet, RawDataAccessBencher, Shields, Microsoft.Data.Sqlite, System.Data.SQLite.Core, MySql.Data, MySqlConnector, Npgsql.

License

Apache-2.0 โ€” Copyright ยฉ 2018 Michael Camara Pendon