You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OData 8 搭配.NET Core 8时Select与Expand操作失败解决方案

OData Get请求类型转换报错解决方案

报错信息

无法将类型为'System.Linq.EnumerableQuery1[Microsoft.AspNetCore.OData.Query.Wrapper.SelectAllAndExpand1[Core.Objects.Result`1[Core.Entities.Invoice]]]'的对象转换为类型'System.Linq.IQueryable`1[Core.Objects.Result`1[Core.Entities.Invoice]]'

解决方案

经排查,问题源于EnableQuery的重复启用:若已在OData全局配置中通过EnableQueryFeatures开启查询支持,控制器方法上不能再添加[EnableQuery]特性,否则会引发类型转换冲突。

全局注册代码示例

Services 
     .AddMvc() 
     .AddControllers() 
     .AddOData(options => options.AddRouteComponents("odata", OdataBuilder.GetEdmModel()) 
                                 .EnableQueryFeatures(null))
     .AddODataNewtonsoftJson();

修改前代码(存在冲突)

[EnableQuery]
[HttpGet]
public IActionResult Get()
{
    var Items = _unitOfWork.Set<TEntity>();
    return Ok(Items);
}

修改后代码(解决冲突)

[HttpGet]
public IActionResult Get()
{
    var Items = _unitOfWork.Set<TEntity>();
    return Ok(Items);
} 

移除方法上的[EnableQuery]特性后,类型转换报错即可解决。

内容的提问来源于stack exchange,提问作者machariamwangi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 23:30:58