AutoMapper .ProjectTo() 方法的 IMongoQueryable 抛出错误
IMongoQueryable throwing error with AutoMapper .ProjectTo() method
下面的代码给出了这个错误。我最近切换到 MongoDb 而不是 Ef Core。似乎 automapper 没有在其中获取对象,而是序列化形式“{document}”或其他任何内容。找不到太多相关信息,也调试了自动映射器代码,但似乎无法弄清楚为什么会发生这种情况。
错误:
GetPartyFullName of type Application.Read.Common.Helpers.MapHelpers is
not supported in the expression tree GetPartyFullName({document}).
var partiesList = await parties
.OrderByDescending(x => x.Created)
.ThenBy(x => x.Name) // this is IOrderedMongoQueryable
//.AsQueryable() => not working either
.ProjectTo<PartyDto>(_mapper.ConfigurationProvider)
.PaginatedListAsync(request.PageNumber, request.PageSize);
映射
... code
profile.CreateMap<Party, PartyDto>()
.ForMember(d => d.FullName, opt => opt.MapFrom(s => MapHelpers.GetPartyFullName(s)));
... more code
如有任何帮助,我们将不胜感激。
当您使用 .ProjectTo
扩展时,自动映射器会将其转换为 select
操作。
根据文档:The .ProjectTo<OrderLineDTO>() will tell AutoMapper’s mapping engine to emit a select clause to the IQueryable...
.
所以很可能 mongo 数据库查询转换器不支持您的 MapHelpers.GetPartyFullName
功能。尝试直接在 .MapFrom(...)
调用中重写您的映射。
下面的代码给出了这个错误。我最近切换到 MongoDb 而不是 Ef Core。似乎 automapper 没有在其中获取对象,而是序列化形式“{document}”或其他任何内容。找不到太多相关信息,也调试了自动映射器代码,但似乎无法弄清楚为什么会发生这种情况。
错误:
GetPartyFullName of type Application.Read.Common.Helpers.MapHelpers is not supported in the expression tree GetPartyFullName({document}).
var partiesList = await parties
.OrderByDescending(x => x.Created)
.ThenBy(x => x.Name) // this is IOrderedMongoQueryable
//.AsQueryable() => not working either
.ProjectTo<PartyDto>(_mapper.ConfigurationProvider)
.PaginatedListAsync(request.PageNumber, request.PageSize);
映射
... code
profile.CreateMap<Party, PartyDto>()
.ForMember(d => d.FullName, opt => opt.MapFrom(s => MapHelpers.GetPartyFullName(s)));
... more code
如有任何帮助,我们将不胜感激。
当您使用 .ProjectTo
扩展时,自动映射器会将其转换为 select
操作。
根据文档:The .ProjectTo<OrderLineDTO>() will tell AutoMapper’s mapping engine to emit a select clause to the IQueryable...
.
所以很可能 mongo 数据库查询转换器不支持您的 MapHelpers.GetPartyFullName
功能。尝试直接在 .MapFrom(...)
调用中重写您的映射。