AutoMapper расширяет дочерние элементы расширенного объекта - PullRequest
0 голосов
/ 30 октября 2019

Учитывая следующий код

class Program
{
    static void AutoMap()
    {
        Mapper.Initialize(cfg =>
        {
            cfg.CreateMap<PERSON, Pessoa>()
                .ForMember(x => x.PessoaId, y => y.MapFrom(z => z.PERSON_ID))
                .ForMember(x => x.PessoaName, y => y.MapFrom(z => z.PERSON_NAME))
                .ForMember(x => x.Coisas, y => { y.MapFrom(z => z.ITEMs); y.ExplicitExpansion(); })
                .ReverseMap()
                .ForMember(x => x.ITEMs, y => { y.MapFrom(z => z.Coisas); y.ExplicitExpansion(); });
            cfg.CreateMap<ITEM, Coisa>()
                .ForMember(x => x.CoisaId, y => y.MapFrom(z => z.ITEM_ID))
                .ForMember(x => x.CoisaName, y => y.MapFrom(z => z.ITEM_NAME))
                .ForMember(x => x.Pessoa, y => { y.MapFrom(z => z.PERSON); y.ExplicitExpansion(); })
                .ForMember(x => x.Propriedades, y => { y.MapFrom(z => z.PROPERTies); y.ExplicitExpansion(); })
                .ReverseMap()
                .ForMember(x => x.PERSON, y => { y.MapFrom(z => z.Pessoa); y.ExplicitExpansion(); })
                .ForMember(x => x.PROPERTies, y => { y.MapFrom(z => z.Propriedades); y.ExplicitExpansion(); });
            cfg.CreateMap<PROPERTY, Propriedade>()
                .ForMember(x => x.PropriedadeId, y => y.MapFrom(z => z.PROPERTY_ID))
                .ForMember(x => x.PropriedadeName, y => y.MapFrom(z => z.PROPERTY_NAME))
                .ForMember(x => x.Coisa, y => { y.MapFrom(z => z.ITEM); y.ExplicitExpansion(); })
                .ReverseMap()
                .ForMember(x => x.ITEM, y => { y.MapFrom(z => z.Coisa); y.ExplicitExpansion(); });
        });
    }

    static void Main(string[] args)
    {
        AutoMap();
        RicardoDataContext context = new RicardoDataContext();
        IQueryable<Pessoa> pessoas = context.PERSONs.ProjectTo<Pessoa>(x => x.Coisas);

        foreach (Pessoa pessoa in pessoas)
        {
            Console.WriteLine(pessoa.PessoaId + ": " + pessoa.PessoaName);

            if (pessoa.Coisas != null)
            {
                foreach (Coisa coisa in pessoa.Coisas)
                {
                    Console.WriteLine("\t" + coisa.CoisaId + ": " + coisa.CoisaName);

                    if (coisa.Propriedades != null)
                    {
                        foreach (Propriedade propriedade in coisa.Propriedades)
                        {
                            Console.WriteLine("\t\t" + propriedade.PropriedadeId + ": " + propriedade.PropriedadeName);
                        }
                    }
                }
            }
        }

        return;
    }
}

Как я могу вызвать AutoMapper's ProjectTo (), чтобы Propriedades (дети Coisas, которые, в свою очередь, являются детьми Pessoa), чтобы они также были расширены (и я будуполучить их в том же SQL-запросе, как, например, прямо сейчас с ЛИЦОМ ЛЕВОГО ВНЕШНЕГО СОЕДИНЕНИЯ - можно ли ожидать еще одно левое внешнее соединение в ITEM-> PROPERTY)?

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