Writing mapping method is machine job. Do not waste your time, let Mapster do it.
PM> Install-Package Mapster
Mapster creates the destination object and maps values to it.
var destObject = sourceObject.Adapt<Destination>();
You make the object, Mapster maps to the object.
sourceObject.Adapt(destObject);
Mapster also provides extensions to map queryables.
using (MyDbContext context = new MyDbContext())
{
// Build a Select Expression from DTO
var destinations = context.Sources.ProjectToType<Destination>().ToList();
// Versus creating by hand:
var destinations = context.Sources.Select(c => new Destination {
Id = p.Id,
Name = p.Name,
Surname = p.Surname,
....
})
.ToList();
}
- Two ways mapping
- Unflattening
- Map & ignore by property path
- MaxDepth
- Map to constructor
Don't let other libraries slow you down, Mapster performance is at least 2.5 times faster!
And 3.x times faster with FastExpressionCompiler and Mapster CodeGen!
Step-into debugging lets you debug your mapping and inspect values as same as its your code.
Mapster CodeGen lets you do mapping with
- Validate mapping at compile time
- Getting raw performance
- Seeing your mapping code & debugging
- Finding usage of your models' properties