0

I am new to Automap, and I am trying to filter out the result. I want to know how to map nested dtos.

Post Entity:


public class Post
{

    public Author? Author { get; set; }
    [Required] [Key] public int Id { get; set; }
    [Required] public string Title { get; set; }
    [Required] public string Description { get; set; }
    [Required] public string Body { get; set; }
}

PostRead: (dto)

public class PostRead
{
    public DateTime Created { get; set; }
    public string Title { get; set; }
    public string Body { get; set; }
    public string Description { get; set; }
    // Author would work but I want only the AuthorRead data
    public AuthorRead Author;
}

Author Entity

public class Author
{
    [Key] [Required] public int Id { get; set; }

    [Required] public string Name { get; set; }

    public IEnumerable<Post> Posts { get; set; }
}

AuthorRead.cs (dto)

public class AuthorRead
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Technically if I use Author Entity in PostRead, it works but it'll give the list of the posts the Author has, and i want only the information that is in the AuthorRead (so the API response doesn't send the list of posts of the Author itself).

how I can map the object of type Author to the type AuthorRead in the PostRead?

Errors:

AutoMapper.AutoMapperMappingException : Missing type map configuration or unsupported mapping.

Mapping types:
Object -> PostRead
System.Object -> OhMyBlogAPI.Models.PostRead
   at lambda_method22(Closure , Object , PostRead , ResolutionContext )
   at OhMyBlogAPI.Tests.AutomapTests.MockPost_MapsTo_PostRead() in

What I tried , and searching a lot.

CreateMap<Post, PostRead>()
                .ForMember(m
                    => m.Author, o
                    => o.MapFrom<Author, AuthorRead>("Author"));

And profiles (each line represent relevant profiles content):

CreateMap<Post, PostRead>();
CreateMap<Author, AuthorRead>();
Progman
  • 16,827
  • 6
  • 33
  • 48

1 Answers1

0

My bad, the code works. I misconfigured something in the Unit testing. I am really sorry.