.net core .Net核心Odata响应缺少元数据值

.net core .Net核心Odata响应缺少元数据值,.net-core,asp.net-core-mvc,odata,.net-framework-version,.net Core,Asp.net Core Mvc,Odata,.net Framework Version,我在使用.NET Framework的旧项目中使用了Odata,并从中得到如下响应: { "@odata.context": "http://localhost:5000/api/$metadata#TestController", "@odata.count": 0, "value": [] } { //some data } 这是odata的元数据,prop“value”包含响应

我在使用.NET Framework的旧项目中使用了Odata,并从中得到如下响应:

{
    "@odata.context": "http://localhost:5000/api/$metadata#TestController",
    "@odata.count": 0,
    "value": []
}
{
   //some data
}
这是odata的元数据,prop“value”包含响应数据。 但是,当我尝试在.NET Core 3.1上的新项目中安装Odata时,它可以正常工作,但它的响应如下:

{
    "@odata.context": "http://localhost:5000/api/$metadata#TestController",
    "@odata.count": 0,
    "value": []
}
{
   //some data
}

我没有odata元数据。我希望所有项目的反应都是相似的。找不到如何将|打开元数据添加到我的.Net core响应中的信息

它可以在我的asp.Net core 3.1项目中很好地工作,下面是一个工作演示,如下所示:

1.安装
Microsoft.AspNetCore.OData
7.5.2版软件包

2.Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddOData();       
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    app.UseHttpsRedirection();
    app.UseRouting();

    app.UseAuthentication(); 
        
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
        endpoints.Select().Filter().OrderBy().Count().MaxTop(10);
        endpoints.MapODataRoute("api", "api", GetEdmModel());
    });
}
private IEdmModel GetEdmModel()
{
    var odataBuilder = new ODataConventionModelBuilder();
    odataBuilder.EntitySet<WeatherForecast>("WeatherForecast");

    return odataBuilder.GetEdmModel();
}
4.控制器(对
路由
属性和
ApiController
属性的注释):

/[ApiController]
//[路线(“[控制器]”)]
公共类WeatherForecastController:ControllerBase
{
私有静态只读字符串[]摘要=新[]
{
“冻结”、“支撑”、“寒冷”、“凉爽”、“温和”、“温暖”、“温和”、“炎热”、“闷热”、“灼热”
};
专用只读ILogger\u记录器;
公共天气预报控制器(ILogger记录器)
{
_记录器=记录器;
}
[启用查询]
[HttpGet]
公共异步任务GetAsync()
{
var rng=新随机数();
返回可枚举的范围(1,5)。选择(索引=>NewWeatherForecast
{
日期=DateTime.Now.AddDays(索引),
温度c=下一个温度(-20,55),
摘要=摘要[rng.Next(摘要长度)]
})
.ToArray();
}
}
结果:


Hi@Roma,我的回答有助于您解决问题吗?如果有,您能否接受我的回答?如果没有,请您跟进让我知道?请参阅:。否。在某些情况下,我有odata元数据,但在某些情况下没有。您需要确保在
getedmdodel
mehod中设置整个实体。