DeltaMapper.OpenTelemetry
0.1.0-alpha
See the version list below for details.
dotnet add package DeltaMapper.OpenTelemetry --version 0.1.0-alpha
NuGet\Install-Package DeltaMapper.OpenTelemetry -Version 0.1.0-alpha
<PackageReference Include="DeltaMapper.OpenTelemetry" Version="0.1.0-alpha" />
<PackageVersion Include="DeltaMapper.OpenTelemetry" Version="0.1.0-alpha" />
<PackageReference Include="DeltaMapper.OpenTelemetry" />
paket add DeltaMapper.OpenTelemetry --version 0.1.0-alpha
#r "nuget: DeltaMapper.OpenTelemetry, 0.1.0-alpha"
#:package DeltaMapper.OpenTelemetry@0.1.0-alpha
#addin nuget:?package=DeltaMapper.OpenTelemetry&version=0.1.0-alpha&prerelease
#tool nuget:?package=DeltaMapper.OpenTelemetry&version=0.1.0-alpha&prerelease
<p align="center"> <img src="icon.png" alt="DeltaMapper" width="200" /> <br /> <h1 align="center">DeltaMapper</h1> <p align="center"><em>Fast, diff-aware .NET object mapper. MIT licensed. Minimal dependencies.</em></p> <p align="center"> <a href="https://www.nuget.org/packages/DeltaMapper"><img src="https://img.shields.io/nuget/v/DeltaMapper.svg" alt="NuGet" /></a> <a href="https://github.com/OrodruinLabs/DeltaMapper/actions/workflows/ci.yml"><img src="https://github.com/OrodruinLabs/DeltaMapper/actions/workflows/ci.yml/badge.svg" alt="Build" /></a> <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT" /></a> </p> </p>
Why DeltaMapper?
- Near-zero overhead — source-generated direct calls run at 7 ns, same as hand-written code
MappingDiff<T>— map and get a structured change set in one call- Source generator —
[GenerateMap]emits assignment code at build time, zero reflection - Full IMapper pipeline — DI, middleware, hooks, EF Core proxy detection, OpenTelemetry tracing
Install
dotnet add package DeltaMapper # core runtime
dotnet add package DeltaMapper.SourceGen # optional: compile-time codegen
dotnet add package DeltaMapper.EFCore # optional: EF Core proxy awareness
dotnet add package DeltaMapper.OpenTelemetry # optional: Activity spans
Requires .NET 10+.
Quick Start
// 1. Define a profile
public class UserProfile : MappingProfile
{
public UserProfile()
{
CreateMap<User, UserDto>()
.ForMember(d => d.FullName, o => o.MapFrom(s => $"{s.First} {s.Last}"))
.ReverseMap();
}
}
// 2. Build & map
var mapper = MapperConfiguration.Create(cfg => cfg.AddProfile<UserProfile>())
.CreateMapper();
var dto = mapper.Map<User, UserDto>(user);
Built-in Change Tracking
var diff = mapper.Patch(updateDto, existingUser);
if (diff.HasChanges)
await auditLog.RecordAsync(userId, diff.Changes);
diff.Changes is IReadOnlyList<PropertyChange> — each entry has PropertyName, From, To, ChangeKind. Nested paths use dot-notation ("Address.City").
Performance
DeltaMapper's source generator produces code as fast as hand-written — and on collections, faster than every competitor tested.
| What's being mapped | DeltaMapper | vs Mapperly | vs AutoMapper |
|---|---|---|---|
| Simple object (5 properties) | 7 ns | Same speed | 7x faster |
| Nested object (parent + child) | 24 ns | Same speed, 33% less memory | 2x faster |
| Collection (10 items) | 22 ns | 5x faster, 8x less memory | 8x faster |
.NET 10. Times are per single mapping operation. DeltaMapper allocates only the destination object — no framework overhead.
Full benchmark results and methodology
Documentation
| Guide | Description |
|---|---|
| API Reference | MapperConfiguration, MappingProfile, IMapper, conventions, records, middleware, DI |
| Source Generator | [GenerateMap], direct calls, analyzer diagnostics |
| EF Core Integration | Proxy detection, lazy loading safety |
| OpenTelemetry Tracing | Activity spans, zero-overhead fast path |
| Migration from AutoMapper | Concept mapping table, rename scripts |
What's Included
- Runtime core — profiles, convention matching, DI integration
MappingDiff<T>— structured change sets withPatch()- Roslyn source generator with zero-overhead direct call methods
- EF Core proxy detection middleware
- OpenTelemetry tracing middleware
- BenchmarkDotNet suite comparing against Mapperly, AutoMapper, and hand-written code
License
MIT. See LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- DeltaMapper (>= 0.1.0-alpha)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2.0 | 101 | 4/7/2026 |
| 1.1.0 | 101 | 4/6/2026 |
| 1.0.0 | 101 | 4/2/2026 |
| 1.0.0-rc.8 | 58 | 3/23/2026 |
| 1.0.0-rc.7 | 55 | 3/21/2026 |
| 1.0.0-rc.6 | 53 | 3/21/2026 |
| 1.0.0-rc.5 | 55 | 3/21/2026 |
| 1.0.0-rc.4 | 57 | 3/20/2026 |
| 1.0.0-rc.3 | 54 | 3/20/2026 |
| 1.0.0-rc.2 | 50 | 3/20/2026 |
| 1.0.0-rc.1 | 55 | 3/19/2026 |
| 0.2.0-alpha | 90 | 3/19/2026 |
| 0.1.0-alpha | 93 | 3/18/2026 |