ASP.NET Core API 使用 EF Core 统计指定用户订单状态数量
以下是一个可能的实现:
首先,我们需要定义一个数据模型来表示订单:
public class Order
{
public int Id { get; set; }
public int UserId { get; set; }
public string Status { get; set; }
}
然后我们需要定义一个 DbContext 来访问数据库:
public class MyDbContext : DbContext
{
public DbSet<Order> Orders { get; set; }
public MyDbContext(DbContextOptions<MyDbContext> options)
: base(options)
{
}
}
接下来,我们可以定义一个 Controller 来提供 API:
[ApiController]
[Route("[controller]")]
public class OrderController : ControllerBase
{
private readonly MyDbContext _dbContext;
public OrderController(MyDbContext dbContext)
{
_dbContext = dbContext;
}
[HttpGet]
public IActionResult Get(int userId)
{
var result = _dbContext.Orders
.Where(o => o.UserId == userId)
.GroupBy(o => o.Status)
.Select(g => new
{
Status = g.Key,
Count = g.Count()
})
.ToList();
return Ok(result);
}
}
在 Get 方法中,我们首先选择所有属于指定 userId 的订单,然后按状态分组,最后选择每个状态的订单数量。我们将结果转换为一个匿名类型列表并返回。
最后,我们需要在 Startup.cs 中注册 DbContext 和 Controller:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MyDb")));
services.AddControllers();
}
这样,我们的 API 就完成了。当我们向 /order?userId=1 发送 GET 请求时,将返回属于用户 1 的所有订单的状态计数。
原文地址: https://www.cveoy.top/t/topic/ojnf 著作权归作者所有。请勿转载和采集!