C# 当使用ProjectTo<;使用EFCore从OData操作访问时,Automapper会扩展所有成员;Dto>;

C# 当使用ProjectTo<;使用EFCore从OData操作访问时,Automapper会扩展所有成员;Dto>;,c#,entity-framework-core,odata,automapper,.net-5,C#,Entity Framework Core,Odata,Automapper,.net 5,我正在尝试使用Automapper将MyClass类型的IQueryable转换为MyClassDto类型的IQueryable。 问题是,即使我为所有成员设置了显式扩展,它仍然会扩展所有导航属性 行动是这样的: [HttpGet] [启用查询] 公共行动结果GetCampaigns(ODataQueryOptions查询选项) { if(queryOptions.SelectExpand!=null) { 返回Ok(_myClassService.AsQueryable().ProjectTo

我正在尝试使用Automapper将MyClass类型的IQueryable转换为MyClassDto类型的IQueryable。 问题是,即使我为所有成员设置了显式扩展,它仍然会扩展所有导航属性

行动是这样的:

[HttpGet]
[启用查询]
公共行动结果GetCampaigns(ODataQueryOptions查询选项)
{
if(queryOptions.SelectExpand!=null)
{
返回Ok(_myClassService.AsQueryable().ProjectTo(_mapper.ConfigurationProvider,null,queryOptions.SelectExpand.RawExpand.Split(',')));
}
返回Ok(_myClassService.AsQueryable().ProjectTo(_mapper.ConfigurationProvider);
}
服务方法仅此而已:

public IQueryable AsQueryable()=>\u dbContext.MyClasses;
以及映射器配置(IAutomapperProfile接口仅用于启动期间的反射):

公共类MyClassMapperConfiguration:Profile,IAutomapperProfile
{
公共MyClassMapperConfiguration()
{
CreateMap().ReverseMap().ForAllMembers(options=>options.ExplicitExpansion());
}
}

您配置了错误的地图。您的意思是:

CreateMap<MyClass, MyClassDto>().ForAllMembers(options => options.ExplicitExpansion());
CreateMap<MyClassDto, MyClass>();
CreateMap().ForAllMembers(options=>options.ExplicitExpansion());
CreateMap();

ForAllMembers()返回void,因此ReverseMap()不能在它之后出现。是的。那么显然
ReverseMap
必须消失。已更新。您应该将其标记为答案。