EggMapper

The fastest .NET runtime object mapper. Drop-in AutoMapper replacement — same API, 2-5x faster, zero allocations, MIT licensed.

AutoMapper went commercial. You need a free, faster alternative. EggMapper is that alternative — swap the NuGet package, change one using, and your app gets 2-5x faster mapping with zero code changes.

Get Started in 30 Seconds View on GitHub Migration from AutoMapper


Why EggMapper?

  AutoMapper EggMapper
License Commercial RPL (v13+) MIT (free forever)
Performance Baseline 2-5x faster
Allocations Extra per-map Zero extra
Runtime reflection Yes No (compiled expressions)
API Original Same API, drop-in

Install

dotnet add package EggMapper

Supports netstandard2.0, net462, net8.0, net9.0, net10.0.

30-Second Quick Start

using EggMapper;

var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<Customer, CustomerDto>()
        .ForMember(d => d.FullName, o => o.MapFrom(s => $"{s.First} {s.Last}"));
});

var mapper = config.CreateMapper();
var dto = mapper.Map<CustomerDto>(customer);

Real-World Example: EF Core Entity to API Response

using EggMapper;

// Profile — group related maps
public class OrderProfile : Profile
{
    public OrderProfile()
    {
        CreateMap<Order, OrderResponse>()
            .ForMember(d => d.CustomerName, o => o.MapFrom(s => s.Customer.FullName));

        CreateMap<OrderLine, OrderLineResponse>();
    }
}

// Minimal API endpoint
app.MapGet("/orders/{id}", async (int id, AppDbContext db, IMapper mapper) =>
{
    var order = await db.Orders
        .Include(o => o.Customer)
        .Include(o => o.Lines)
        .FirstOrDefaultAsync(o => o.Id == id);

    return order is null
        ? Results.NotFound()
        : Results.Ok(mapper.Map<Order, OrderResponse>(order));
});

Key Features

Category Feature
API Same as AutoMapper — CreateMap, ForMember, Profile, IMapper
Performance Zero runtime reflection, zero extra allocations, compiled expression trees
Collections Auto-mapping Map<List<B>>(listOfA) + batch MapList<A,B>() with inlined loop
EF Core ProjectTo<S,D>(config) translates to SQL; proxy support for lazy-loading
Cloning Map<T,T>(obj) creates a deep copy without configuration
Patch Patch<S,D>(source, dest) for partial updates
DI One-line setup: services.AddEggMapper(assembly)
Advanced Open generics, inline validation, constructor and record mapping
Code Gen Optional source generators ([MapTo], [EggMapper]) for compile-time mapping

Back to top

EggMapper — MIT licensed © Eggspot. Fastest .NET runtime object mapper.