-
Notifications
You must be signed in to change notification settings - Fork 1
Dapper
Arnel Robles edited this page Sep 28, 2026
·
1 revision
Dapper integration for mapping database query results directly to DTOs.
using Mapsicle.Dapper;
using Dapper;
// Query and map in one call
var users = connection.QueryAndMap<User, UserDto>("SELECT * FROM Users").ToList();
// With parameters
var user = connection.QuerySingleAndMap<User, UserDto>(
"SELECT * FROM Users WHERE Id = @Id",
param: new { Id = 1 });// Async query and map
var users = await connection.QueryAndMapAsync<User, UserDto>("SELECT * FROM Users");
// Async single result
var user = await connection.QuerySingleAndMapAsync<User, UserDto>(
"SELECT * FROM Users WHERE Id = @Id",
param: new { Id = 1 });// Use a custom mapper configuration
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<User, UserSummaryDto>()
.ForMember(d => d.FullName, opt => opt.MapFrom(s => $"{s.FirstName} {s.LastName}"));
});
var users = connection.QueryAndMap<User, UserSummaryDto>(
"SELECT * FROM Users", config).ToList();
// Or use IMapper instance
var mapper = config.CreateMapper();
var users = connection.QueryAndMap<User, UserSummaryDto>(
"SELECT * FROM Users", mapper).ToList();using var transaction = connection.BeginTransaction();
// Mappings work within transactions
var users = connection.QueryAndMap<User, UserDto>(
"SELECT * FROM Users WHERE Active = 1",
transaction: transaction).ToList();
transaction.Commit();// Map existing IEnumerable from Dapper
var users = connection.Query<User>("SELECT * FROM Users");
var dtos = users.MapTo<User, UserDto>(mapper);Mapsicle
Packages
- Core
- Fluent
- EntityFramework
- Validation
- NamingConventions
- Serilog
- Dapper
- AspNetCore
- Json
- Caching
- Audit
- DataAnnotations
Reference