Как вернуть статью вместе со связанными тегами - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть три таблицы: Статьи, Теги и ArticleTag.Модель Article имеет отношение многие ко многим с моделью Tag с тегом ArticleTag в качестве их соединения.Это модели:

public class Article
{
    ... 

    public ICollection<ArticleTag> ArticleTags { get; set; }
}

public class Tag
{
    ... 

    public ICollection<ArticleTag> ArticleTags { get; set; }
}

public class ArticleTag
{
    public int ArticleId { get; set; }
    public Article Article { get; set; }

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

Вот как я получаю статью:

public Article GetArticleById(int id)
{
    return _appContext.Articles
        .Include(a => a.ArticleTags).ThenInclude(at => at.Tag)
        .FirstOrDefault(a => a.Id == id);
}

Модель просмотра:

public class ArticleViewModel
{
    ...

    public ICollection<TagViewModel> Tags { get; set; }
}

А это контроллер:

[HttpGet("{id:int}")]
public IActionResult Get(int id)
{
    var article = _unitOfWork.Articles.GetArticleById(id);

    return Ok(Mapper.Map<ArticleViewModel>(article));
}

Запрос API возвращает статью, но теги не включены.

1 Ответ

0 голосов
/ 12 сентября 2018

Попробуйте код ниже для настройки Mapper.

  1. TagViewModel

    public class TagViewModel
    {
        public int Id { get; set; }
        public string TagName { get; set; }
    
    }
    
  2. AutoMapperProfile

    public class AutoMapperProfile : Profile
    {
       public AutoMapperProfile()
       {
          CreateMap<Article, ArticleViewModel>()
              .ForMember(dest => dest.Tags, opt => opt.MapFrom(src => src.ArticleTags.Select(at => at.Tag)));
          CreateMap<Tag, TagViewModel>();
       }
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...