【发布时间】:2021-02-25 11:00:40
【问题描述】:
我在使用AutoMapper 映射相同类型对象的集合时遇到问题。
让我举个例子:
首先,对象类:
public class ClassA
{
public string Name { get; set; }
public string Type { get; set; }
}
public class ClassB
{
public string Name { get; set; }
public List<ClassA> Classes { get; set; }
}
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<ClassA, ClassA>()
.ForMember(dest => dest.Name, opts => opts.MapFrom(src => src.Name))
.ForAllOtherMembers(opts => opts.Ignore());
CreateMap<ClassB, ClassB>()
.ForMember(dest => dest.Name, opts => opts.MapFrom(src => src.Name))
.ForMember(dest => dest.Classes, opts => opts.MapFrom(src => src.Classes))
.ForAllOtherMembers(opts => opts.Ignore());
}
}
现在在执行这样的代码时:
List<ClassB> targetList;
targetList = DbContext.ClassesB.ProjectTo<ClassB>(Mapper.ConfigurationProvider).ToList();
映射无法正常工作。 ClassB.Name 映射正确,但看起来 ClassA 的映射定义被忽略了,因为所有属性都已映射。此外,当我将 ClassB.Classes 属性更改为 no-list (ClassA) 时,映射工作正常。
是AutoMapper 的错误是它忽略了定义的映射吗?
【问题讨论】:
标签: c# .net-core automapper