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);
刚开始使用 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);