ASP.NET Core Web 开发:Web API + EF Core 实战教程(零基础可直接跟着做)

4 阅读3分钟

我给你整理最实用、企业级、一步到位的学习路线 + 完整可运行代码,专门针对 Web API + EF Core 这两个核心技能。

你学完这套,就能独立做: ✅ 后端接口开发 ✅ 数据库增删改查 ✅ 企业标准项目结构 ✅ 对接前端 / 小程序 / App


一、学习路线(最快 3 天掌握)

  1. 创建 Web API 项目
  2. 理解控制器、路由、请求方法(GET/POST/PUT/DELETE)
  3. 安装 EF Core(数据库 ORM)
  4. 搭建实体类 + 数据库上下文
  5. 执行迁移,自动建表
  6. 实现完整 CRUD(增删改查)接口
  7. 依赖注入、返回规范、Swagger 接口文档
  8. 实战项目结构

二、环境准备

  1. 安装 .NET 8 SDK
  2. VS 2022 / Rider / VS Code(任意一个)
  3. SQL Server / SQLite(教程用 SQLite,无需安装数据库)

三、创建项目

dotnet new webapi -n MyWebApi
cd MyWebApi

四、安装 EF Core 包

dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Tools

五、编写代码(完整复制可用)

1. 创建实体类(Model)

Models/Product.cs

namespace MyWebApi.Models;

// 商品表实体
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; } = string.Empty;
    public decimal Price { get; set; }
    public int Stock { get; set; }
}

2. 创建数据库上下文(EF Core 核心)

Data/AppDbContext.cs

using Microsoft.EntityFrameworkCore;
using MyWebApi.Models;

namespace MyWebApi.Data;

public class AppDbContext : DbContext
{
    // 注入配置
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }

    // 对应数据库表
    public DbSet<Product> Products => Set<Product>();
}

3. 在 Program.cs 注册数据库

using Microsoft.EntityFrameworkCore;
using MyWebApi.Data;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

// 👇 注册 SQLite 数据库
builder.Services.AddDbContext<AppDbContext>(options =>
    options.UseSqlite("Data Source=MyDatabase.db"));

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();

4. 执行迁移,自动创建数据库

打开程序包管理器控制台或终端执行:

dotnet ef migrations add InitialCreate
dotnet ef database update

执行后会自动生成数据库文件


5. 编写 API 控制器(完整 CRUD)

Controllers/ProductsController.cs

using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using MyWebApi.Data;
using MyWebApi.Models;

namespace MyWebApi.Controllers;

[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
    private readonly AppDbContext _context;

    // 构造函数注入(.NET Core 核心:依赖注入)
    public ProductsController(AppDbContext context)
    {
        _context = context;
    }

    // 1. 获取所有商品
    [HttpGet]
    public async Task<ActionResult<List<Product>>> GetAll()
    {
        return await _context.Products.ToListAsync();
    }

    // 2. 根据ID获取单个商品
    [HttpGet("{id}")]
    public async Task<ActionResult<Product>> GetById(int id)
    {
        var product = await _context.Products.FindAsync(id);
        if (product == null) return NotFound();
        return product;
    }

    // 3. 新增商品
    [HttpPost]
    public async Task<ActionResult<Product>> Add(Product product)
    {
        _context.Products.Add(product);
        await _context.SaveChangesAsync();
        return CreatedAtAction(nameof(GetById), new { id = product.Id }, product);
    }

    // 4. 修改商品
    [HttpPut("{id}")]
    public async Task<IActionResult> Update(int id, Product product)
    {
        if (id != product.Id) return BadRequest();
        _context.Entry(product).State = EntityState.Modified;
        await _context.SaveChangesAsync();
        return NoContent();
    }

    // 5. 删除商品
    [HttpDelete("{id}")]
    public async Task<IActionResult> Delete(int id)
    {
        var product = await _context.Products.FindAsync(id);
        if (product == null) return NotFound();

        _context.Products.Remove(product);
        await _context.SaveChangesAsync();
        return NoContent();
    }
}

六、运行项目

dotnet run

打开浏览器访问: https://localhost:5001/swagger

你会看到: ✅ 自动生成的接口文档 ✅ 5 个完整 CRUD 接口 ✅ 可直接测试调用

这就是企业最标准的 Web API + EF Core 项目


七、你必须掌握的核心知识点

1. Web API 核心

  • [ApiController]:API 模式,自动模型验证
  • [Route("api/[controller]")]:路由规则
  • [HttpGet]/[HttpPost]:请求方式
  • ActionResult<T>:规范返回值

2. EF Core 核心

  • DbContext:数据库连接
  • DbSet<T>:数据表
  • 迁移命令:自动建表、更新表结构
  • 异步方法:async/await(企业必须用)

3. 依赖注入(DI)

private readonly AppDbContext _context;
public ProductsController(AppDbContext context)
{
    _context = context;
}

这是 .NET Core 最核心的设计模式


总结

  • Web API:做接口
  • EF Core:操作数据库
  • 你现在拥有的是 .NET 后端开发 80% 工作内容
  • 代码可直接用于毕设 / 面试 / 工作