C# 映射导航属性时自动映射错误映射类型

C# 映射导航属性时自动映射错误映射类型,c#,asp.net-core,.net-core,automapper,C#,Asp.net Core,.net Core,Automapper,我有一个Post和Tag类,在PostTag链接表中具有多对多关系 public class Post { public Guid Id { get; set; } public string Title { get; set; } public string Content { get; set; } public List<PostTag> PostTag { get; set; } public string AppUserId {

我有一个Post和Tag类,在PostTag链接表中具有多对多关系

public class Post
{
    public Guid Id { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public List<PostTag> PostTag { get; set; }

    public string AppUserId { get; set; }
    public AppUser AppUser { get; set; }
}

public class Tag
{
    public Guid Id { get; set; }
    public string Name { get; set;  }
    public List<PostTag> PostTag { get; set; }
}

public class PostTag
{
    public Guid PostId { get; set; }
    public Post Post { get; set; }

    public Guid TagId { get; set; }
    public Tag Tag { get; set; }
}

除了列表
Post.PostTag
映射到DTO中名称稍有不同的对象:
PostDto.PostTags
,需要映射器配置文件中的成员规则之外,似乎正在工作:

CreateMap<Post, PostDto>()
    .ForMember(d=> d.PostTags, o=>o.MapFrom(s=>s.PostTag));
CreateMap()
.ForMember(d=>d.PostTag,o=>o.MapFrom(s=>s.PostTag));
其余的看起来还不错,以下几点对我很有用:

List<Post> posts = ...blah
var dtos = mapper.Map<List<PostDto>>(posts);
List posts=…废话
var dtos=mapper.Map(posts);

请看这里的小提琴:

我们可以假设你说的Mapster是指AutoMapper吗?@NPras是的。对不起,我已经修好了。谢谢。我确定错误实际上是由于Post/PostDto的AppUser/UserDto属性造成的,并且它们没有自定义映射。我已经用新的映射更新了原始帖子,但仍然抛出相同的错误。如果我从PostDto中取出UserDto,它就可以正常工作。我丢了什么?修好了。我在CreateMap中错误地翻转了源/目标!有没有简单的方法调试AutoMapper?我讨厌这样一个事实:它产生的错误根本没有帮助!
CreateMap<UserDto, AppUser>()
    .ForMember(d => d.DisplayName, o => o.MapFrom(s => s.DisplayName));

CreateMap<Post, PostDto>();
    .ForMember(d=> d.User, o=>o.MapFrom(s => s.Appuser))
    .ForMember(d=> d.PostTags, o=>o.MapFrom(s=>s.PostTag));

CreateMap<PostTag, TagDto>()
    .ForMember(d => d.Id, o => o.MapFrom(s => s.Tag.Id))
    .ForMember(d => d.Name, o => o.MapFrom(s => s.Tag.Name));
{
errors: "Error mapping types. Mapping types: List`1 -> List`1 System.Collections.Generic.List`1[[Domain.Post, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] -> System.Collections.Generic.List`1[[Application.PostDto, Application, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
}
CreateMap<Post, PostDto>()
    .ForMember(d=> d.PostTags, o=>o.MapFrom(s=>s.PostTag));
List<Post> posts = ...blah
var dtos = mapper.Map<List<PostDto>>(posts);