- 确保在项目中安装了 Microsoft.AspNetCore.OData NuGet 包。
- 确保在 Startup.cs 中添加了以下配置:
using Microsoft.AspNet.OData.Extensions;
using Microsoft.AspNet.OData.Builder;
// ...
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddMvc(options => {
options.EnableEndpointRouting = false; // If using ASP.NET Core 3.0 or later
});
services.AddOData();
services.AddSingleton();
}
public void Configure(IApplicationBuilder app)
{
app.UseMvc(routeBuilder =>
{
routeBuilder.Select().Filter().Expand().OrderBy().MaxTop(null).Count();
routeBuilder.MapODataServiceRoute("odata", "odata", GetEdmModel());
});
}
private static IEdmModel GetEdmModel()
{
var builder = new ODataConventionModelBuilder();
builder.EntitySet("MyEntitySet");
return builder.GetEdmModel();
}
- 在控制器类上添加 [EnableQuery] 属性,如下所示:
using Microsoft.AspNet.OData;
// ...
[EnableQuery]
public class MyController : ODataController
{
// ...
}
- 确保使用正确的命名空间,如下所示:
using Microsoft.AspNet.OData;
using Microsoft.AspNetCore.Mvc;
// ...
- 如果使用了 ASP.NET Core 2.x,则需要为控制器启用 OData 功能,如下所示:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Routing.Controllers;
// ...
public class MyController : ODataController
{
// ...
}