AutoMapper扩展了扩展实体的子级

时间:2019-10-30 13:06:38

标签: entity-framework automapper

给出以下代码

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上期待另一个左外部联接吗?

0 个答案:

没有答案