给出以下代码
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的ProjectTo(),以便Propriedades(Coisas的孩子又是Pessoa的孩子)也可以扩展(我现在将使用相同的SQL查询,例如PERSON)来进行扩展左外部联接ITEM-会在ITEM-> PROPERTY上期待另一个左外部联接吗?