Docs / Use Custom Mappers

Use Custom Mappers

What this page covers#

This page shows a practical custom mapper pattern.

Inline example#

</> C#
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#

</> C#
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.