AutoQueryable / Automapper с ASP.Net Core Web API - PullRequest
0 голосов
/ 21 сентября 2018

Я использую AutoQueryable от Thibaut Renoncourt вместе с AutoMapper.И все работает отлично, пока я не попытаюсь использовать automapper для отправки DTO обратно клиенту.

Так что приведенный ниже код прекрасно работает:

    [AutoQueryable]
    public IQueryable<DatabaseClassName> Get([FromServices] IQueryableRepository repository)
    {

        return repository.GetIQueryable<DatabaseClassName>();
    }

Однако этот код не работает:

    [AutoQueryable]
    public IQueryable<ViewModel> Get([FromServices] IQueryableRepository repository)
    {

        return repository.GetIQueryable<DatabaseClassName>().UseAsDataSource(_mapper).For<ViewModel>();
    }

В моем классе профиля Mapper я настроил его следующим образом:

public class MapperProfile : Profile
{
    public MapperProfile()
    {

        CreateMap<DatabaseClassName, ViewModel>().ReverseMap();
        //CreateMap(typeof(Source<>), typeof(Destination<>)).ReverseMap();

    }
}

в моем классе запуска (метод ConfigureServices), который я поместил в:

        services.AddAutoMapper();

Ошибка выглядит следующим образом:

System.RuntimeType.GetPropertyImpl(string name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers)
System.Type.GetProperty(string name, BindingFlags bindingAttr)
System.Reflection.TypeExtensions.GetProperty(Type type, string name, BindingFlags bindingAttr)
AutoQueryable.Helpers.SelectHelper.GetMemberExpression<TEntity>(Expression parent, SelectColumn column, IAutoQueryableProfile profile, bool isLambdaBody)
AutoQueryable.Helpers.SelectHelper.InitType<TEntity>(IEnumerable<SelectColumn> columns, Expression node, IAutoQueryableProfile profile)
AutoQueryable.Helpers.SelectHelper.GetSelector<TEntity, TResult>(ICollection<SelectColumn> selectColumns, IAutoQueryableProfile profile)
AutoQueryable.Core.Models.AutoQueryHandler.GetDefaultSelectableQuery<T>(IQueryable<T> query)
AutoQueryable.Core.Models.AutoQueryHandler.GetAutoQuery<T>(IQueryable<T> query)
AutoQueryable.Core.Models.AutoQueryableContext.GetAutoQuery<T>(IQueryable<T> query)
System.Dynamic.UpdateDelegates.UpdateAndExecute2<T0, T1, TRet>(CallSite site, T0 arg0, T1 arg1)
AutoQueryable.AspNetCore.Filter.FilterAttributes.AutoQueryableFilter.OnActionExecuted(ActionExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

Мне было любопытно, есть ли у кого-нибудь какие-либо предложения по исправлению этой проблемы.

...