OData – Get Started 搭建单侧环境()

前言

之前写过 EF Core – Get Started 搭建单侧环境, 这篇补上一个 WebApi + EF Core + OData

创建项目

dotnet new webapi -o EfCoreODataWebApi

是 new webapi 哦, 不是 webapp

Install NuGet

dotnet add package Microsoft.AspNetCore.OData

EF Core 的我就不写了

Files

ProductController.cs

using System.Net.Mime;
using EfCoreODataWebApi.Entity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Query;
using Microsoft.AspNetCore.OData.Routing.Attributes;

namespace EfCoreODataWebApi.Controllers;

[ApiController]
[Route("api")]
public class ProductController : ControllerBase
{
    private readonly ApplicationDbContext _db;

    public ProductController(
        ApplicationDbContext db
    )
    {
        _db = db;
    }

    [ODataAttributeRouting]
    [EnableQuery]
    [HttpGet("products")]
    [Produces(MediaTypeNames.Application.Json)]
    [ProducesResponseType(StatusCodes.Status200OK)]
    public ActionResult<IEnumerable<Product>> GetProducts()
    {
        return Ok(_db.Products);
    }
}

Program.cs

var modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Product>("products");

builder.Services.AddControllers().AddOData(
    options => options.Select().Filter().OrderBy().Expand().Count().SetMaxTop(null).AddRouteComponents(
        "api",
        modelBuilder.GetEdmModel()
    )
);

它只需要添加 Services 就可以了.

访问 API

https://192.168.1.152:44300/api/products?$filter=Id%20ge%203
————————

前言

之前写过 EF Core – Get Started 搭建单侧环境, 这篇补上一个 WebApi + EF Core + OData

创建项目

dotnet new webapi -o EfCoreODataWebApi

是 new webapi 哦, 不是 webapp

Install NuGet

dotnet add package Microsoft.AspNetCore.OData

EF Core 的我就不写了

Files

ProductController.cs

using System.Net.Mime;
using EfCoreODataWebApi.Entity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Query;
using Microsoft.AspNetCore.OData.Routing.Attributes;

namespace EfCoreODataWebApi.Controllers;

[ApiController]
[Route("api")]
public class ProductController : ControllerBase
{
    private readonly ApplicationDbContext _db;

    public ProductController(
        ApplicationDbContext db
    )
    {
        _db = db;
    }

    [ODataAttributeRouting]
    [EnableQuery]
    [HttpGet("products")]
    [Produces(MediaTypeNames.Application.Json)]
    [ProducesResponseType(StatusCodes.Status200OK)]
    public ActionResult<IEnumerable<Product>> GetProducts()
    {
        return Ok(_db.Products);
    }
}

Program.cs

var modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Product>("products");

builder.Services.AddControllers().AddOData(
    options => options.Select().Filter().OrderBy().Expand().Count().SetMaxTop(null).AddRouteComponents(
        "api",
        modelBuilder.GetEdmModel()
    )
);

它只需要添加 Services 就可以了.

访问 API

https://192.168.1.152:44300/api/products?$filter=Id%20ge%203