. net core 2.2, automapper 9.0.0, efcore 2.2.6, odata 7.2.3. Для использования автоматической карты в контексте я использую AutoMapper.AspNetCore.OData.EFCore "Version =" 1.0. Пакет 0 "
public class RolesController : ODataController
{
private readonly ApplicationDbContext _context;
private readonly IMapper _mapper;
public RolesController(ApplicationDbContext context, IMapper mapper)
{
_context = context ?? throw new ArgumentNullException(nameof(context));
_mapper = mapper ?? throw new ArgumentNullException(nameof(mapper));
}
[EnableQuery]
public async Task<IActionResult> Get(ODataQueryOptions<RoleGridRow> options)
{
return Ok(await _context.Roles.AsNoTracking().GetQueryAsync(_mapper, options));
}
}
public RolesProfile()
{
CreateMap<ApplicationRole, RoleGridRow>()
.ForMember(dest => dest.Users, opt => opt.MapFrom(src => src.UserRoles ));
CreateMap<ApplicationUserRole, User>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.UserId))
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.User.Name));
}
ApplicationRole / User / UserRole наследуются от IdentityRole / User / UserRole Все настройки навигации настроены правильно.
Мне нужно следующее DTO
public class RoleGridRow
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public bool IsActive { get; set; }
public List<User> Users { get; set; }
}
С OData все вызовы работают: заказ, расширение до пользователей, выбор, ...
Для заказа, в тот момент, когда я пытаюсь упорядочить по нескольким полям, например: "https://localhost: 5001 / odata / role ? $ orderby = IsActive, Name ", я получаю следующее исключение:
No generic method 'ThenBy' on type 'System.Linq.Queryable' is compatible with the supplied type arguments and arguments. No type arguments should be provided if the method is non-generic.
Поддерживает ли autopper это вообще? Или я что-то пропускаю?