我正在使用 AutoMapper (v6.1.1) 将一些实体对象映射为DTO对象,并将其返回给基于 Web Api 的REST Web服务,在 .NET 4.6.2 中实现。
现在,我手动设置我的映射,如下所示:
Mapper.Initialize((config) =>
{
config.CreateMap<SignBook, sdk.SignBook>()
.ForMember(dto => dto.DocumentId, conf => conf.MapFrom(obj => obj.Document.Id))
.ForMember(dto => dto.UserId, conf => conf.MapFrom(obj => obj.User.Id))
.ForMember(dto => dto.DeviceId, conf => conf.MapFrom(obj => obj.Device.Id))
.ForMember(dto => dto.SignTypeId, conf => conf.MapFrom(obj => obj.SignType.Id))
.ForMember(dto => dto.StateId, conf => conf.MapFrom(obj => obj.State.Id))
.ReverseMap();
});
但是,正如您所见,DTO对象的所有属性都以实体名称+“Id”后缀命名(例如:从实体中的Document.Id
到DTO中的DocumentId
)。
由于我有许多实体要映射,我想为AutoMapper创建一个映射规则(因此创建自定义解析器),可以自动执行此操作。是否有可能做到这一点?
在需要执行此类操作时,是否还有一些最佳实践?因此,我想将实体对象映射到DTO对象。我的实体是具有许多相互关系并且还使用延迟加载的NHibernate对象,因此无法直接将它们推回Web Api方法结果进行序列化。