Use Custom Mappers
What this page covers#
This page shows a practical custom mapper pattern.
Inline example#
var users = await db.ListAsync( "dbo.usp_User_ListActive", static reader => new User { UserId = reader.GetInt32(reader.GetOrdinal("UserId")), Name = reader.GetString(reader.GetOrdinal("Name")) });
Reusable example#
public static class UserMap { public static User Map(SqlDataReader reader) => new() { UserId = reader.GetInt32(reader.GetOrdinal("UserId")), Name = reader.GetString(reader.GetOrdinal("Name")) }; } var users = await db.ListAsync("dbo.usp_User_ListActive", UserMap.Map);
When to prefer this#
Prefer a custom mapper when the mapping deserves a name, is reused, or needs to be completely explicit.