Я пытаюсь точно понять, какое выражение выбора сгенерирует AutoMapper для следующего отображения.Я пытаюсь воспроизвести ошибку, которая проявляется только при использовании проекции AutoMapper, но не с выражением выбора, созданным вручную.Я знаю, что выражение отображения является избыточным и может быть упрощено, но затем ошибка также исчезает.
Я считаю, что отображение должно генерировать дословно выражение выбора для следующего, но я знаю, что нет,потому что, подставляя это выражение вместо проецирования с AutoMapper, все работает как положено (и ошибка исчезает).
dbContext.Blogs.Select(blog => new BlogDto { Post = blog.Posts.Any() ? blog.Posts.Select(post => new PostDto()).FirstOrDefault() : null })
public class Blog
{
public Guid Id { get; set; }
[InverseProperty(nameof(Post.Blog))]
public virtual List<Post> Posts { get; } = new List<Post>();
}
public class Post
{
public Guid Id { get; set; }
public Guid BlogId { get; set; }
[ForeignKey(nameof(BlogId))]
public virtual Blog Blog { get; private set; }
}
public class BlogDto
{
public PostDto Post { get; set; }
}
public class PostDto { }
public class BlogProfile : Profile
{
public BlogProfile()
{
CreateMap<Blog, BlogDto>()
.ForMember(x => x.Post, x => x.MapFrom(y => y.Posts.Any() ? y.Posts.FirstOrDefault() : null));
}
}
public class PostProfile : Profile
{
public PostProfile()
{
CreateMap<Post, PostDto>();
}
}
TLDR Я пытаюсь понять, что (или как) выборочное выражение дословно будет сгенерировано AutoMapper с приведенным выше отображением.