我正在使用实体框架 6.2.0 和 Automapper 6.2.2。我需要将实体映射Cart
到CartDto
. CartDto
有一个属性Total
需要映射到Cart.GetTotal()
. 我想用它.ProjectTo
来简化查询,但如果我这样做,我会收到错误:
LINQ to Entities does not recognize the method GetTotal()
因为投影使用IQueryable
和方法在SQL中没有翻译。有没有办法解决这个问题?
var automapperConfiguration = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Cart, CartDto>()
.ForMember(x => x.Total, o => o.MapFrom(x => x.GetTotal()))
.ForAllOtherMembers(x => x.Ignore());
});
var cartDto = dbContext.Carts
.ProjectTo<CartDto>(automapperConiguration)
.FirstOrDefault();