在AutoMapper个人资料

时间:2018-01-03 12:40:02

标签: asp.net-core automapper asp.net-core-webapi

我有asp.net core 2.0 web api项目。 每个Domain类都继承BaseEntity类:

public class BaseEntity
{
    public Guid Id { get; set; }

    public DateTime CreatedOn { get; set; }

    public Guid CreatedBy { get; set; }

    public DateTime ModifiedOn { get; set; }

    public Guid ModifiedBy { get; set; }
}

用于将视图模型转换为DTO-s我使用AutoMapper。

我创建了两个配置文件,一个用于ViewModel到DTO,另一个用于DTO到ViewModel。

在我将ViewModels映射到DTO的配置文件中,我需要BaseEntity个字段

    public Guid CreatedBy { get; set; }

    public Guid ModifiedBy { get; set; }

从授权用户映射。我已经设置了身份验证,只需要从AutoMapper配置文件类访问授权用户对象。

我有什么方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:0)

您必须在AutoMapper中使用自定义值解析器才能将您的用户对象置于上下文中。

配置文件配置

Mapper.CreateMap<ViewModel, Dto>()
    .ForMember(d => d.CreatedBy, opt => opt.ResolveUsing((src, dest, destMember, res) => res.Context.Options.Items["CreatedBy"]));

调用Mapper时

Mapper.Map<ViewModel, Dto>(src, opt => opt.Items["CreatedBy"] = this.createdByUserObject);