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