Automapper - 在 C# 中创建地图

Automapper - Creating Maps in C#

刚开始使用 AutoMapper,想弄清楚一些事情。

假设我想在 User 和 UserDto 之间无缝映射。

这些例子似乎都表明我必须先去一个启动区(例如WebApiConfig.cs或startup.cs或global.axax等)然后做这样的事情:

Mapper.CreateMap<User, UserDto>();

大概如果我有 50 或 100 个 entities/DTOs 要映射,我将需要逐字添加 50 或 100 行代码,并在一个 class 到另一个之间进行映射?肯定有更聪明的方法,对吧?

如果我不需要做任何特定的映射/覆盖,我真的需要这样做吗?我一定是误解了框架的基本原理,因为这对我来说似乎是错误的。

谢谢!

只要一切在源和目标上匹配,你就可以使用DynamicMap:

var target = Mapper.DynamicMap<TSource, TTarget>(source);

然而,根据需要创建映射会更有效:

if (Mapper.FindTypeMapFor<TSource, TTarget>() == null)
{
    Mapper.CreateMap<TSource, TTarget>();
}

var target =  Mapper.Map<TSource, TTarget>(source);