C# 自动映射投影

C# 自动映射投影,c#,automapper,C#,Automapper,我需要做一个从数据库到模型实体的投影。在获取数据库中的数据并映射到word和reposy统一的实体之前: public async Task<IEnumerable<Entity>> GetProjectsSponsorByYear(Guid idUser) { logger.Trace("Called GetProjectsSponsorByYear method in ProjectBusiness"); var Entity

我需要做一个从数据库到模型实体的投影。在获取数据库中的数据并映射到word和reposy统一的实体之前:

 public async Task<IEnumerable<Entity>> GetProjectsSponsorByYear(Guid idUser)
    {
        logger.Trace("Called GetProjectsSponsorByYear method in ProjectBusiness");
        var Entitys = await this.unitOfWork.Repository<Entity>().Queryable().Where(p => p.SponsorId == idUser && p.Draft == true).ToListAsync();


 return listProjectDataBaseAsModel;
使用ProjectTo方法在存储库和模型之间进行投影时,从Linq获取执行。 我知道这个执行是为了Linq创建一个查询,而不是在她身上实现这个方法


需要知道是否有任何方法可以实现这一点,无论是在投影之前还是之后。

查看AutoMapper.EF6项目,它使用另一个项目DelegateDecompiler根据方法和属性内容构建投影。它检查IL并构建一个表达式以匹配该IL,然后传递给您的可查询提供程序:

然后,您可以直接从可查询列表中投影:

var allProjectsGrid = await this.projectBusiness.GetAll()
                                .ProjectToListAsync<Model>();
var allProjectsGrid=wait this.projectBusiness.GetAll()
.projectToListSync();

另外,如果我想投影到getAll()方法中,例如:“Repository().Queryable().ProjectTo().ToListAsync()”;,那么您不需要对ID和Title进行FormMember调用,这是AutoMapper:)的自动部分;,我可以使用ProjectToListSync方法???是的,你可以!它执行ProjectTo和ToList,但也在中间添加了委托反编译器步骤:
 .ForMember(dest => dest.ImpactSupervisorDescription, opt => opt.MapFrom(src => src.ImpactSupervisor.GetDescription()))
var allProjectsGrid = await this.projectBusiness.GetAll()
                                .ProjectToListAsync<Model>();