我有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配置文件类访问授权用户对象。
我有什么方法可以做到这一点吗?
答案 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);