Automapper: получить список свойств - PullRequest
2 голосов
/ 27 июня 2019

Мне нужно получить список свойств из вложенного объекта.

Это часть моего кода:

[Table("Articles")]
class Article
{
    public Article()
    {
        ListComplex = new List<ArticlesComplex>();
    }       
    public long Id { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }
    public virtual ICollection<ArticlesComplex> ListComplex { get; set; } 
}

[Table("ArticlesComplex")]
class ArticlesComplex
{
    public long ArticleId { get; set; }
    public virtual Article Article { get; set; }    
    public long ComplexId { get; set; }
    public virtual Article Complex { get; set; }
}

//***********************
// DTO
//***********************
public class ArticleDTO
{
    public ArticleDTO()
    {
        ListComplex = new List<long>();
        ListComplexCodes = new List<string>();
    }       
    public long Id { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }

    public IEnumerable<long> ListComplex { get; set; }
    public IEnumerable<string> ListComplexCodes { get; set; }
}

BD

ARTICLES                                    ARTICLESCOMPLEX
Id | Code        | Name     |               ArticleId | ComplexId
 5 | COD_ART_05  | Paper    |                   7     |     5
 6 | COD_ART_06  | Item     |                   7     |     6
 7 | COD_ART_07  | Pendrive |

Создайте отображение:

mapper.CreateMap<Article, ArticleDTO>().ForMember(m => m.ListComplex, m =>     m.MapFrom(y => y.ListComplex.Select(x => x.Complex.Id).ToList()))
                                   .ForMember(m => m.ListComplexCodes, m => m.MapFrom(y => y.ListComplex.Select(x => x.Complex.Codigo).ToList()))

Наконец, я получаю результат:

var dbWhere = DbContext.Articles.Where(x => x.Codigo == "COD_ART_07");
var list = await dbWhere.ProjectTo<ArticleDTO>(null, "ListComplex").ToListAsync();

// list.ListComplex (2) -> 5,6
// list.ListComplexCodes (0) ???

Мне нужно получить свойство 'Code' в моемcase "COD_ART_05", "COD_ART_06" в поле 'ListComplexCodes'.

Может ли кто-нибудь помочь мне с этим?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...