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)
我有一个类似的问题,问题是我使用 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 _
| 归档时间: |
|
| 查看次数: |
2277 次 |
| 最近记录: |