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();
}
- Generate dynamic proxy for interface
- UseDestinationValue
- Null propagating for property path
- Support multiple sources
- New plugins
Mapster was designed to be efficient on both speed and memory. You could gain 5x faster while using only 1/3 of memory. And you could gain to 12x faster with
Method | Mean | StdDev | Error | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|
'Mapster 5.0.0' | 141.84 ms | 0.931 ms | 1.408 ms | 31250.0000 | - | - | 125.12 MB |
'Mapster 5.0.0 (Roslyn)' | 60.48 ms | 1.186 ms | 1.993 ms | 31222.2222 | - | - | 125.12 MB |
'Mapster 5.0.0 (FEC)' | 58.17 ms | 0.231 ms | 0.442 ms | 29714.2857 | - | - | 119.02 MB |
'Mapster 5.0.0 (Codegen)' | 51.56 ms | 0.312 ms | 0.524 ms | 31200.0000 | - | - | 125.12 MB |
'ExpressMapper 1.9.1' | 299.05 ms | 2.081 ms | 3.146 ms | 60000.0000 | - | - | 241.85 MB |
'AutoMapper 9.0.0' | 708.06 ms | 3.398 ms | 5.137 ms | 91000.0000 | - | - | 364.69 MB |
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
https://github.com/MapsterMapper/Mapster/releases
https://github.com/MapsterMapper/Mapster/wiki
JetBrains kindly provides Mapster with a free open-source licence for their Resharper and Rider.
- Resharper makes Visual Studio a much better IDE
- Rider is fast & powerful cross platform .NET IDE