# DapperLib/Dapper

**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/dapperlib-dapper).**

18,213 stars · 3,689 forks · C# · other

## Links

- GitHub: https://github.com/DapperLib/Dapper
- Homepage: https://www.learndapper.com/
- awesome-repositories: https://awesome-repositories.com/repository/dapperlib-dapper.md

## Topics

`ado-net` `dapper` `sql`

## Description

Dapper is a lightweight object-relational mapper for .NET that functions as a high-performance data access library. It operates by extending standard database connection interfaces, allowing developers to execute raw SQL queries while automating the mapping of database results to strongly-typed objects.

The library distinguishes itself through its use of runtime code generation, which creates high-performance instructions to map database rows to object properties with minimal overhead. It provides flexible data retrieval options, supporting both memory-buffered loading for speed and row-by-row streaming to minimize memory footprint. By leveraging non-blocking task patterns, it ensures that database operations remain responsive during high-latency input and output tasks.

Dapper covers a broad capability surface for database interaction, including support for parameterized queries to ensure security, atomic transaction management, and the execution of stored procedures. It handles complex data scenarios such as multi-result set parsing, bulk operations, and the mapping of related entities into nested object structures. The library is designed to be database-agnostic, maintaining compatibility with diverse database systems through standard provider abstractions.

## Tags

### Data & Databases

- [Object-Relational Mappers](https://awesome-repositories.com/f/data-databases/object-relational-mappers.md) — Functions as a high-performance micro-ORM that maps database query results directly to strongly-typed objects.
- [Data Access and Querying](https://awesome-repositories.com/f/data-databases/data-access-querying.md) — Maps database query results to strongly-typed objects with minimal overhead for high-performance data access.
- [Raw SQL Execution](https://awesome-repositories.com/f/data-databases/data-access-querying/data-access-abstraction/raw-sql-execution.md) — Executes custom SQL statements and stored procedures directly against a database for full control. ([source](https://www.learndapper.com/))
- [Row Mapping Logic](https://awesome-repositories.com/f/data-databases/database-schema-mapping/row-mapping-logic.md) — Automatically projects returned database rows into strongly typed objects for easier data handling. ([source](https://www.learndapper.com/dapper-query/selecting-multiple-rows))
- [Object-Relational Mapping](https://awesome-repositories.com/f/data-databases/object-relational-mapping.md) — Maps database query results to strongly-typed objects with support for both buffered and streaming retrieval. ([source](https://www.learndapper.com/))
- [Query Parameter Filters](https://awesome-repositories.com/f/data-databases/data-querying/query-parameter-filters.md) — Maps object properties to SQL query parameters to prevent injection attacks and simplify data passing. ([source](https://www.learndapper.com/parameters))
- [Dynamic Mapping Engines](https://awesome-repositories.com/f/data-databases/object-relational-mapping/dynamic-mapping-engines.md) — Uses runtime code generation to create high-performance instructions that map database result sets directly to object properties.
- [Object Mappers](https://awesome-repositories.com/f/data-databases/sql-query-interfaces/object-mappers.md) — Automates the translation of database rows into application objects using extension methods on standard database connection interfaces.
- [Asynchronous Database Command Execution](https://awesome-repositories.com/f/data-databases/asynchronous-database-command-execution.md) — Runs database commands without blocking the main execution thread to allow for parallel processing. ([source](https://www.learndapper.com/non-query))
- [Asynchronous Database Drivers](https://awesome-repositories.com/f/data-databases/asynchronous-database-drivers.md) — Performs database operations using non-blocking calls to improve application responsiveness. ([source](https://www.learndapper.com/dapper-query/index))
- [Bulk Data Operations](https://awesome-repositories.com/f/data-databases/bulk-data-operations.md) — Provides high-performance batch insert and update operations to minimize database round-trips. ([source](https://www.learndapper.com/extensions/microorm-dapper-repositories))
- [SQL Query Execution](https://awesome-repositories.com/f/data-databases/database-management-systems/database-systems-management/database-operations/sql-query-execution.md) — Performs database operations without blocking the main execution thread to improve system performance. ([source](https://www.learndapper.com/dapper-query))
- [Database Query Joins](https://awesome-repositories.com/f/data-databases/database-query-joins.md) — Retrieves single or multiple records with support for joins, grouping, and ordering. ([source](https://www.learndapper.com/extensions/microorm-dapper-repositories))
- [Database Schema Mapping](https://awesome-repositories.com/f/data-databases/database-schema-mapping.md) — Translates database query results into objects using metadata attributes for mapping. ([source](https://www.learndapper.com/extensions/microorm-dapper-repositories))
- [Database Transactions](https://awesome-repositories.com/f/data-databases/database-transactions.md) — Groups multiple database operations into a single unit of work that ensures data integrity. ([source](https://www.learndapper.com/misc/transaction))
- [Entity Mappings](https://awesome-repositories.com/f/data-databases/type-mapping-frameworks/script-to-native-type-mappings/entity-mappings.md) — Defines reusable rules for mapping application objects to database tables for consistent data access. ([source](https://www.learndapper.com/bulk-operations/bulk-insert))
- [Multi-Table Result Mappers](https://awesome-repositories.com/f/data-databases/virtual-table-querying/multi-table-result-mappers.md) — Retrieves data from multiple related tables in one query and assembles them into nested object structures using custom logic. ([source](https://www.learndapper.com/relationships))
- [Batch Data Operations](https://awesome-repositories.com/f/data-databases/batch-data-operations.md) — Performs batch create, update, or delete operations on database records to improve performance for large volumes of data. ([source](https://www.learndapper.com/relationships))
- [Atomic Transactions](https://awesome-repositories.com/f/data-databases/database-management-systems/database-systems-management/connection-transaction-management/atomic-transactions.md) — Groups multiple database operations into atomic units of work with manual commit and rollback support. ([source](https://www.learndapper.com/extensions/microorm-dapper-repositories))
- [CRUD Interfaces](https://awesome-repositories.com/f/data-databases/database-record-management/crud-interfaces.md) — Automates create, read, update, and delete operations on database tables using extension methods. ([source](https://www.learndapper.com/extensions/dommel))
- [Runtime Metadata Inspectors](https://awesome-repositories.com/f/data-databases/metadata-inspection-tools/runtime-metadata-inspectors.md) — Analyzes object models at execution time to dynamically construct SQL queries without requiring pre-compiled configurations.
- [Object-Relational Mapping Relations](https://awesome-repositories.com/f/data-databases/object-relational-mapping-relations.md) — Joins parent and child records automatically to populate navigation properties in object models. ([source](https://www.learndapper.com/extensions/dommel))
- [Result Streaming APIs](https://awesome-repositories.com/f/data-databases/result-streaming-apis.md) — Streams database query results row-by-row to minimize memory consumption. ([source](https://www.learndapper.com/dapper-query/selecting-unbuffered-async))
- [Single Record Retrievers](https://awesome-repositories.com/f/data-databases/single-record-retrievers.md) — Fetches single database rows and maps them to strongly-typed objects. ([source](https://www.learndapper.com/dapper-query/selecting-single-rows))
- [SQL Utilities](https://awesome-repositories.com/f/data-databases/sql-utilities.md) — Constructs SQL statements dynamically at runtime by inspecting object models and mapping properties to database columns.
- [Stored Procedures](https://awesome-repositories.com/f/data-databases/stored-procedures.md) — Maps database query results to objects by invoking stored procedures with parameters. ([source](https://www.learndapper.com/dapper-query/selecting-multiple-rows))
- [Column Mappings](https://awesome-repositories.com/f/data-databases/column-mappings.md) — Allows overriding default conventions for table names, column names, and keys to match specific database schema requirements. ([source](https://www.learndapper.com/extensions/dommel))
- [Collection Parameter Handlers](https://awesome-repositories.com/f/data-databases/data-querying/query-parameter-filters/collection-parameter-handlers.md) — Expands arrays or lists into SQL IN clauses automatically to query multiple values in a single database operation. ([source](https://www.learndapper.com/parameters))
- [Database Command Interfaces](https://awesome-repositories.com/f/data-databases/database-command-interfaces.md) — Executes SQL statements like insert, update, or delete and returns the count of affected rows. ([source](https://www.learndapper.com/database-providers))
- [Database Engines](https://awesome-repositories.com/f/data-databases/database-management-systems/database-engines.md) — Supports multiple database engines by generating provider-specific SQL syntax automatically. ([source](https://www.learndapper.com/extensions/dommel))
- [Database Query Execution](https://awesome-repositories.com/f/data-databases/database-query-execution.md) — Maps query results to a standard data reader interface by executing SQL statements. ([source](https://www.learndapper.com/execute-reader))
- [Bulk Data Ingestion](https://awesome-repositories.com/f/data-databases/insert-operations/bulk-data-ingestion.md) — Adds large collections of objects to database tables in a single operation. ([source](https://www.learndapper.com/bulk-operations/bulk-insert))
- [Record Insertion](https://awesome-repositories.com/f/data-databases/record-insertion.md) — Maps object properties to SQL parameters to perform record insertion into a database. ([source](https://www.learndapper.com/saving-data/insert))
- [Record Updating](https://awesome-repositories.com/f/data-databases/record-updating.md) — Updates large collections of entities in a single database round trip to improve performance. ([source](https://www.learndapper.com/bulk-operations/bulk-update))
- [Repository Context Managers](https://awesome-repositories.com/f/data-databases/repository-context-managers.md) — Organizes data access through centralized classes that manage database connections and repository instances. ([source](https://www.learndapper.com/extensions/microorm-dapper-repositories))
- [Result Set Search](https://awesome-repositories.com/f/data-databases/result-set-search.md) — Processes complex database responses containing multiple rows, scalar values, or distinct result sets. ([source](https://www.learndapper.com/dapper-query/index))
- [Multi-Result Set Fetching](https://awesome-repositories.com/f/data-databases/result-set-search/multi-result-set-fetching.md) — Executes multiple queries in a single database command to retrieve distinct data sets efficiently. ([source](https://www.learndapper.com/dapper-query/selecting-multiple-results))
- [Multi-Result Set Parsers](https://awesome-repositories.com/f/data-databases/result-streaming-apis/multi-result-set-parsers.md) — Processes complex database responses containing multiple distinct data streams by iterating through sequential result sets in a single command.
- [Asynchronous Scalar Execution](https://awesome-repositories.com/f/data-databases/asynchronous-scalar-execution.md) — Performs a database query in the background and returns the first column of the first row without blocking. ([source](https://www.learndapper.com/dapper-query/selecting-scalar-values))
- [Batch Insertion Interfaces](https://awesome-repositories.com/f/data-databases/data-insertion-interfaces/batch-insertion-interfaces.md) — Processes collections of objects by iterating through them to execute individual insert statements. ([source](https://www.learndapper.com/saving-data/insert))
- [Hierarchical Data Insertion](https://awesome-repositories.com/f/data-databases/data-insertion-interfaces/hierarchical-data-insertion.md) — Saves parent and child entities in a single operation by automatically managing relationships. ([source](https://www.learndapper.com/bulk-operations/bulk-insert))
- [Database Parameter Managers](https://awesome-repositories.com/f/data-databases/data-querying/query-parameter-filters/database-parameter-managers.md) — Configures explicit parameter details including data types, sizes, and directions for stored procedures. ([source](https://www.learndapper.com/parameters))
- [Database Connectivity](https://awesome-repositories.com/f/data-databases/database-connectivity.md) — Provides extension methods to integrate with diverse database providers through standard connection interfaces. ([source](https://www.learndapper.com/extensions))
- [Database Deletion Utilities](https://awesome-repositories.com/f/data-databases/database-deletion-utilities.md) — Removes large sets of entities from a database by mapping objects to primary keys or custom criteria. ([source](https://www.learndapper.com/bulk-operations/bulk-delete))
- [Inheritance Mappings](https://awesome-repositories.com/f/data-databases/inheritance-mappings.md) — Parses database rows into specific object types based on discriminator columns to handle inheritance. ([source](https://www.learndapper.com/hierarchical-data))
- [Query Caching Strategies](https://awesome-repositories.com/f/data-databases/query-caching-strategies.md) — Caches database query results to reduce latency and server load. ([source](https://www.learndapper.com/extensions/dapper-extensions))
- [SQL Generators](https://awesome-repositories.com/f/data-databases/sql-generators.md) — Automates the generation of SQL statements from object models to simplify data access tasks. ([source](https://www.learndapper.com/extensions))
- [SQL Query Builders](https://awesome-repositories.com/f/data-databases/sql-query-builders.md) — Translates language-integrated expressions into SQL queries to filter and paginate data. ([source](https://www.learndapper.com/extensions/dommel))

### Security & Cryptography

- [Query Parameterization](https://awesome-repositories.com/f/security-cryptography/query-parameterization.md) — Ensures security and performance by separating SQL command strings from data values using database-native parameter binding.

### Programming Languages & Runtimes

- [Database Access Extensions](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/language-features/core-conceptual-frameworks/programming-language-concepts/method-definitions/method-extensions/database-access-extensions.md) — Extends standard database connection interfaces with fluent methods to provide an intuitive data access layer.

### Software Engineering & Architecture

- [Asynchronous Execution](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/asynchronous-execution.md) — Performs database operations without blocking the main execution thread using non-blocking data retrieval. ([source](https://www.learndapper.com/dapper-query/selecting-multiple-rows))
- [Database Abstraction Layers](https://awesome-repositories.com/f/software-engineering-architecture/database-abstraction-layers.md) — Provides a lightweight abstraction layer that decouples application code from specific database provider implementations.
- [Asynchronous Task Processors](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-task-processors.md) — Implements non-blocking task patterns to ensure database operations remain responsive during high-latency I/O.
