Dapper Micro-ORM
What is Dapper?
Dapper vs Entity Framework Core
Feature
Dapper
EF Core
When to Use Dapper
Installation
Basic Setup
Connection String Configuration
Creating a Connection
Basic CRUD Operations
Query - Return Multiple Rows
QueryFirst / QueryFirstOrDefault
QuerySingle / QuerySingleOrDefault
Execute - INSERT, UPDATE, DELETE
ExecuteScalar - Return Single Value
Working with Parameters
Anonymous Objects
DynamicParameters
IN Clause with Lists
Advanced Queries
Multi-Mapping (JOIN queries)
Multi-Mapping (Better Approach)
Three-Way Mapping
Multiple Result Sets
Stored Procedures
Calling Stored Procedures
Example Stored Procedures
Transactions
Basic Transaction
Transaction with Using Statement
TransactionScope (Distributed Transactions)
Async Operations
Async CRUD
Async with Multiple Results
Bulk Operations
Bulk Insert
Bulk Update
Bulk Delete
Dynamic Queries
Dynamic Results
Building Dynamic SQL
Repository Pattern with Dapper
Interface
Implementation
Registration and Usage
Unit of Work Pattern
Interface
Implementation
Performance Optimization
Query Performance
Buffered vs Unbuffered Queries
Command Timeout
Best Practices
1. Always Use Parameters (Prevent SQL Injection)
2. Use Async Methods
3. Dispose Connections Properly
4. Use Const for SQL Strings
5. Handle NULLs Properly
6. Use Transactions for Multiple Operations
7. Avoid Over-Fetching Data
8. Use Stored Procedures for Complex Logic
Common Patterns
Pagination
Soft Delete
Audit Trail
Performance Comparison
Dapper vs EF Core Benchmark
Dapper Extensions
Dapper.Contrib
Dapper.SimpleCRUD
Quick Reference
Common Dapper Methods
Method
Returns
Use Case
Async Versions
Decision Tree: Dapper vs EF Core
Last updated