Dapper
Core micro-ORM focused on fast materialization and minimal abstraction over SQL.
Decision Guide
Dapper keeps data access close to SQL and is often chosen for read-heavy or performance-critical paths. The secondary decision is how much convenience to add around core Dapper without hiding query intent or creating fragile conventions.
The decision to make
Should a .NET data layer use raw Dapper only or include Dapper extension packages?
Curated starting points to compare. Always evaluate suitability against your specific project requirements.
Core micro-ORM focused on fast materialization and minimal abstraction over SQL.
Adds simple CRUD helpers and attribute-based mapping conventions on top of Dapper.
Convention-based CRUD and expression support for Dapper-oriented repositories.
Keep SQL close to the feature that owns it and parameterize every value. Define small request/response records instead of mapping whole persistence entities by default.
Open connections late and dispose them predictably; pass cancellation tokens through async calls. Use explicit transactions only for a clearly defined atomic boundary.
Treat query plans as part of the implementation. Add indexes for measured access patterns, set command timeouts deliberately, and test mappings against the actual provider.
Risk
Checklist
Revisit your Dapper package mix when domain queries become more complex, write models grow, or query-generation conventions hide critical SQL details.