我正在尝试使用AutoMapper将包含项目的数据库实体投影到另一个域实体
IQueryable<DBTypeEntity> allItems = _dbContext.DBType.Include(e => e.A)
.Include(e => e.B)
.ThenInclude(e => e.C)
.Include(e => e.D)
.ThenInclude(ac => ac.E);
使用投影
var result = allItems.ProjectTo<DBTypeDomain>(_typeMapper.ConfigurationProvider);
以下是我的映射:
CreateMap<DBTypeEntity, DBTypeDomain>()
.ForMember(e => e.A, opt => opt.Ignore())
.ForMember(e => e.B, opt => opt.MapFrom(e => e.B))
.ForMember(e => e.C, opt => opt.MapFrom(e => e.C))
.ForMember(e => e.E, opt => opt.MapFrom(e => e.E))
.ForMember(e => e.F, opt => opt.ResolveUsing<FResolver, ICollection<AssociatedFEntity>>(e => e.AssociatedFs))
.ForMember(e => e.G, opt => opt.MapFrom(e => e.G));
其他类型是属性映射的直接属性,没有什么特别之处。 我为类型映射器设置了所有必需的配置文件映射,但是,我得到了一个神秘的异常(无法将其解析为可查询表达式)。 我正在使用EF Core 2.0和Automapper 6.2.2
请帮忙吗?
答案 0 :(得分:0)
我成功解决了这个问题。 使用投影时不再需要包含(如Automapper Docs中所示)。 自定义解析器被替换为集合中的select语句,自定义解析器禁止在AutoMapper中为IQueryable使用投影。