源 IQueryable 的提供程序未实现 IDbAsyncQueryProvider

Lyl*_*yle 4 c# asp.net automapper asp.net-web-api

我打算使用以下示例在我的 api 上创建分页: https: //www.codeproject.com/Articles/1073488/Paging-in-ASP-NET-Web-API 我已经实现了所有代码及其运行直到我输入了以下代码行:

var results = await projection.ToListAsync();
Run Code Online (Sandbox Code Playgroud)

那么它会导致运行时错误:

“源 IQueryable 的提供程序未实现 IDbAsyncQueryProvider...”

我研究了这个错误并尝试在 Global.asax.cs 文件中初始化映射器,如下所示:

        protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        Mapper.Initialize(cfg => cfg.CreateMap<Logging.Models.LogsModel, Log>());
        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

    }
Run Code Online (Sandbox Code Playgroud)

这并不能解决问题,有人知道我在初始化 Automapper 时做错了什么吗?

提前致谢。

这是我的控制器中的实现代码:

        public async Task<IHttpActionResult> Get(int? page = null, int pageSize = 10, string orderBy = nameof(LogsModel.Id), bool ascending = true)
    {
        if (page == null)
        {
            return Ok(_repository.GetLogs());
        }
        else
        {
            var returnList =  _repository.GetLogs().AsQueryable();
            returnList = returnList as IQueryable<LogsModel>;
            var logsout = await CreatePagedResults<LogsModel, Log>(returnList, page.Value, pageSize, orderBy, ascending);
            return Ok(logsout);
        }
    }
Run Code Online (Sandbox Code Playgroud)

GetLogs 的定义如下:

        public IEnumerable<LogsModel> GetLogs()
    {
        List<LogsModel> logs = Logs.ToList<LogsModel>();
        return logs;
    }
Run Code Online (Sandbox Code Playgroud)

Aud*_*eld 5

我有一个类似的问题,问题是我使用 System.Data.Entity 而不是 Microsoft.EntityFrameworkCore

我刚刚更换:

使用 System.Data.Entity;使用 Microsoft.EntityFrameworkCore;

因为两个命名空间都有相同的方法,例如 SingleOrDefaulAsync,但在 System.Data.Entity 中,此方法具有 InvalidOperationException 源未实现 IDbAsyncQueryProvider,请在此处查看更多信息https://learn.microsoft.com/en-us/dotnet/api/system。 data.entity.queryableextensions.singleordefaultasync?view=entity-framework-6.2.0#System_Data_Entity_QueryableExtensions_SingleOrDefaultAsync__1_System_Linq_IQueryable___0__System_Linq_Expressions_Expression_System_Func___0_System_Boolean___System_Threading_CancellationToken _