# linq2db/linq2db

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/linq2db-linq2db).**

3,239 stars · 482 forks · C# · mit

## Links

- GitHub: https://github.com/linq2db/linq2db
- awesome-repositories: https://awesome-repositories.com/repository/linq2db-linq2db.md

## Topics

`access` `bulk-inserts` `clickhouse` `database` `db2` `dotnet` `firebird` `informix` `linq` `mariadb` `mssql` `mysql` `oracle` `orm` `postgresql` `sap-hana` `sql` `sqlce` `sqlite` `sqlserver`

## Description

linq2db is a type-safe object-relational mapper that translates LINQ expressions into optimized SQL queries for multiple database providers. It functions as a database mapper that links classes to tables and includes a SQL query builder and a command-line schema tool for generating data classes from existing databases.

The project provides high-performance bulk data processing for inserting and loading large volumes of records via batch or binary copy methods. It also supports advanced SQL operations, including window functions, common table expressions for recursive hierarchical querying, and dataset merging.

The library covers a broad range of data manipulation and query execution capabilities, including optimistic locking, query result pagination, and many-to-many navigation translation. It also includes systems for connection lifecycle management, transaction atomicity, and database operation interception.

## Tags

### Data & Databases

- [Class-Based Schema Mappings](https://awesome-repositories.com/f/data-databases/class-based-schema-mappings.md) — Links C# classes to database tables using attributes, fluent configurations, or naming inference. ([source](https://linq2db.github.io/index.html))
- [Type-Safe Query Builders](https://awesome-repositories.com/f/data-databases/type-safe-query-builders.md) — Provides a type-safe query builder that uses C# expressions to ensure compile-time safety for database queries.
- [Database Schema Mapping](https://awesome-repositories.com/f/data-databases/database-schema-mapping.md) — Links database tables and packages to C# classes using attributes or fluent configurations for structured data access.
- [Database Transaction Management](https://awesome-repositories.com/f/data-databases/database-transaction-management.md) — Provides programmatic control over database transaction boundaries and connection lifecycles to ensure atomicity.
- [Expression-Based Data Querying](https://awesome-repositories.com/f/data-databases/expression-based-data-querying.md) — Executes type-safe queries supporting composition, pagination, and selective column projection. ([source](https://cdn.jsdelivr.net/gh/linq2db/linq2db@master/README.md))
- [LINQ Expression Translators](https://awesome-repositories.com/f/data-databases/expression-based-data-querying/linq-expression-translators.md) — Converts LINQ expression trees into optimized, provider-specific SQL command trees.
- [SQL Dialect Adapters](https://awesome-repositories.com/f/data-databases/sql-dialect-adapters.md) — Provides a common interface to abstract database-specific syntax and functions across multiple SQL engines.
- [SQL Query Builders](https://awesome-repositories.com/f/data-databases/sql-query-builders.md) — Provides a programmatic builder for constructing complex SQL queries with joins and window functions.
- [Table-to-Code Mappers](https://awesome-repositories.com/f/data-databases/table-definitions/object-mappings/table-to-code-mappers.md) — Maps database tables to C# classes to enable type-safe interactions and query validation.
- [Transaction Lifecycle Control](https://awesome-repositories.com/f/data-databases/atomic-commit-logs/transaction-lifecycle-control.md) — Manages the commitment or rollback of atomic database operations to ensure data integrity. ([source](https://cdn.jsdelivr.net/gh/linq2db/linq2db@master/README.md))
- [Bulk Data Ingestion](https://awesome-repositories.com/f/data-databases/bulk-data-ingestion.md) — Implements high-performance utilities for importing large volumes of data using provider-specific binary protocols.
- [Bulk Data Loading](https://awesome-repositories.com/f/data-databases/bulk-data-loading.md) — Provides high-performance utilities for importing massive datasets from external sources into database tables. ([source](https://linq2db.github.io/))
- [Common Table Expressions](https://awesome-repositories.com/f/data-databases/common-table-expressions.md) — Allows the creation of reusable temporary result sets within queries to simplify complex logic. ([source](https://linq2db.github.io/articles/sql/CTE.html))
- [Batch Insertion Interfaces](https://awesome-repositories.com/f/data-databases/data-insertion-interfaces/batch-insertion-interfaces.md) — Inserts large collections of records using efficient batching or binary copy interfaces. ([source](https://linq2db.github.io/articles/sql/Bulk-Copy.html))
- [Database-to-Code Scaffolding](https://awesome-repositories.com/f/data-databases/data-structure-definitions/data-class-generators/database-to-code-scaffolding.md) — Ships a command-line tool to automatically generate data classes from an existing database schema. ([source](https://linq2db.github.io/))
- [Database Connection Lifecycles](https://awesome-repositories.com/f/data-databases/database-connection-lifecycles.md) — Controls the lifecycle of database connections through explicit disposal or per-query operations. ([source](https://linq2db.github.io/articles/general/Managing-data-connection.html))
- [Hierarchical Querying](https://awesome-repositories.com/f/data-databases/hierarchical-data-models/hierarchical-querying.md) — Traverses self-referencing data structures and hierarchical relationships using specialized recursive querying. ([source](https://linq2db.github.io/articles/sql/CTE.html))
- [Join Operations](https://awesome-repositories.com/f/data-databases/join-operations.md) — Provides inner and left join syntax within expressions to combine data from multiple tables. ([source](https://cdn.jsdelivr.net/gh/linq2db/linq2db@master/README.md))
- [Table Merge Semantics](https://awesome-repositories.com/f/data-databases/map-data-structure-manipulation/map-merging/schema-merging/table-merge-semantics.md) — Synchronizes two tables by inserting, updating, or deleting records based on join conditions. ([source](https://linq2db.github.io/))
- [Many-to-Many Relationship Managers](https://awesome-repositories.com/f/data-databases/object-relational-mappers/many-to-many-relationship-managers.md) — Translates queries over implicit join tables into SQL while supporting eager loading and composite keys. ([source](https://github.com/linq2db/linq2db/wiki/Releases-and-Roadmap))
- [Advanced SQL Construct Execution](https://awesome-repositories.com/f/data-databases/raw-sql-execution/advanced-sql-construct-execution.md) — Provides execution support for advanced SQL constructs like window functions and common table expressions through an object-oriented interface.
- [Recursive CTE Queries](https://awesome-repositories.com/f/data-databases/search-indexing/complex-search-querying/recursive-graph-queries/recursive-cte-queries.md) — Supports traversing self-referencing data structures and hierarchical relationships using recursive common table expressions.
- [Deferred Query Compilation](https://awesome-repositories.com/f/data-databases/sql-generators/deferred-query-compilation.md) — Builds internal query representations as expression trees that are only compiled to SQL upon execution.
- [Window Functions](https://awesome-repositories.com/f/data-databases/window-functions.md) — Implements analytic window functions for performing calculations across sets of rows using partitioning and ordering. ([source](https://linq2db.github.io/articles/sql/Window-Functions-%28Analytic-Functions%29.html))

### Development Tools & Productivity

- [Model Generators](https://awesome-repositories.com/f/development-tools-productivity/code-generators/boilerplate-generators/database-schema-scaffolding/model-generators.md) — Includes a command-line tool for generating data classes based on an existing database schema.
- [Custom SQL Function Registrars](https://awesome-repositories.com/f/development-tools-productivity/custom-task-functions/sql-function-namespaces/custom-sql-function-registrars.md) — Exposes database-specific functions to the query builder by defining signatures and argument conversion logic. ([source](https://linq2db.github.io/index.html))
- [Method Mapping](https://awesome-repositories.com/f/development-tools-productivity/custom-task-functions/sql-function-namespaces/method-mapping.md) — Binds C# static methods to native database functions to enable complex expressions in type-safe queries.

### Part of an Awesome List

- [Object Relational Mappers](https://awesome-repositories.com/f/awesome-lists/data/object-relational-mappers.md) — Fast, type-safe LINQ database access layer for POCO objects.
