README.md
August 17, 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.
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 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.
It also addresses a common tension in data access: choosing between the raw performance and control of manual ADO.NET and the productivity of a full-featured ORM. RepoDB brings both together โ without forcing a trade-off.
As a Hybrid-ORM
It stays close to the metal while remaining easy to use:
| Feature | Description |
|---|---|
| ๐ 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 Productivity Platform
It goes beyond the ORM with enterprise-grade capabilities for building, operating, and scaling with confidence:
| Feature | Description |
|---|---|
| ๐ฆ 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. |
| ๐๏ธ Multi-DB Support | A growing range of relational database providers with a consistent development experience. |
Packages and Build Status
| Project | Nuget | Downloads | Status |
|---|---|---|---|
| Core | |||
| SQL Server | |||
| SQL Server (Bulk) | |||
| Oracle ๐ | |||
| Oracle (Bulk) ๐ | |||
| PostgreSQL | |||
| PostgreSQL (Bulk) | |||
| MySQL | |||
| MySQL (Bulk) ๐ | |||
| MySQL Connector | |||
| MySQL Connector (Bulk) ๐ | |||
| MariaDB ๐ | |||
| MariaDB (Bulk) ๐ | |||
| IBM DB2 ๐ | |||
| IBM DB2 (Bulk) ๐ | |||
| SQLite | |||
| Telemetry (Core) ๐ | |||
| Telemetry (Default) ๐ |
Get Started
Choose your database and follow the quick-start guide:
Explore individual features in the documentation.
Want visibility into what your operations are doing in production? See Telemetry ๐ below to enable opt-in insights with a couple lines of code.
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 SQL Server, Oracle, MySQL, PostgreSQL, IBM DB2 and SQLite.
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:
| RepoDB | Dapper | Entity 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
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.
- Browse for-grabs issues and submit a PR.
- File a new issue to start a discussion.
- Contribute to the documentation site.
- Blog about it, share it, or simply give us a :star:
Community
- GitHub Issues โ bug reports and feature requests.
- Microsoft Teams โ live Q&A and community chat.
- X / Twitter โ news and updates.
Read our contibuting page for more.
Resources
- Building the Solutions
- Coding Standards
- Issuing a Pull Request
- Reporting an Issue
- Support Policy
- Limitations
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