AgileMapper
AgileMapper is a zero-configuration, highly-configurable, unopinionated object mapper with viewable execution plans. It flattens, unflattens, deep clones, merges, updates and projects queries via extension methods, or a static or instance API. It targets .NET 3.5+ and .NET Standard 1.0+.
You can use it to create new objects:
var customerDto = Mapper.Map(customer).ToANew<CustomerDto>();
...project queries:
var customerDtos = await context
.Customers
.Project().To<CustomerDto>()
.ToArrayAsync();
...perform id-aware updates:
Mapper.Map(customerViewModel).Over(customer);
...and merges:
Mapper.Map(customerOne).OnTo(customerTwo);
It's available via NuGet and licensed with the MIT licence. Check out the documentation for more!