Учитывая следующий код
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)?