所有文章 > 日积月累 > ASP.NET Core Web API 快速集成 Entity Framework Core:从安装到数据预热全流程
ASP.NET Core Web API 快速集成 Entity Framework Core:从安装到数据预热全流程

ASP.NET Core Web API 快速集成 Entity Framework Core:从安装到数据预热全流程

引言:为何选择 EF Core?

Entity Framework Core(EF Core)是 .NET 平台上最流行的 ORM 框架,省去绝大多数手写 SQL 的烦恼。只需少量配置,即可实现模型与数据库的双向映射与 CRUD 操作。


一、安装 SQL Server Express 与 SSMS 并创建数据库

  1. 下载并安装 SQL Server Express,勾选“Basic”一键模式,无需复杂配置。
  2. 同步安装 SQL Server Management Studio (SSMS),启动后右键 Databases → New Database,命名为 PokemonReview 并确认,即完成数据库创建。

二、获取连接字符串小技巧【截图时间节点:1:56】

  1. 在 Visual Studio 中打开 SQL Server Object Explorer,点击 Add SQL Server,输入 SSMS 中 Server Name 登陆。
  2. 展开 Databases → PokemonReview,右击查看 Connection String

  1. 将此字符串粘入 appsettings.json 中:

    {
     "ConnectionStrings": {
       "DefaultConnection": " < Your_Connection_String_Here > "
     }
    }

此法避免繁琐手动拼接,几秒即可拿到正确格式。


三、安装 EF Core 及相关 NuGet 包

在 VS Code 的 NuGet Package Manager 中,搜索并安装:

  • Microsoft.EntityFrameworkCore.SqlServer(核心数据库提供者)
  • Microsoft.EntityFrameworkCore.Design (设计时支持)

确保选用 Latest Stable 版本,并在 .csproj 中见到对应 < PackageReference > 条目。


四、创建 DataContext 并注册实体集合

  1. 新建 Data/DataContext.cs,继承自 DbContext

    public class DataContext : DbContext
    {
       public DataContext(DbContextOptions < DataContext >  options) 
           : base(options) { }
    
       public DbSet < Pokemon >           Pokemons { get; set; }
       public DbSet < Owner >             Owners   { get; set; }
       public DbSet < PokemonOwner >      PokemonOwners { get; set; }
       /* … 其他 DbSet … */
    }
  2. 注意 DbSet < T > 属性名称应 “复数” 以符合 EF 约定。

五、在 OnModelCreating 配置多对多关系

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    // Pokemon ←→ Category 多对多 
    modelBuilder.Entity < PokemonCategory > ()
        .HasKey(pc = > new { pc.PokemonId, pc.CategoryId });
    modelBuilder.Entity < PokemonCategory > ()
        .HasOne(pc = > pc.Pokemon)
        .WithMany(p = > p.PokemonCategories)
        .HasForeignKey(pc = > pc.PokemonId);
    modelBuilder.Entity < PokemonCategory > ()
        .HasOne(pc = > pc.Category)
        .WithMany(c = > c.PokemonCategories)
        .HasForeignKey(pc = > pc.CategoryId);

    // 同理配置 PokemonOwner 多对多...
}

通过 Fluent API 明确声明联合主键与双向导航,使 EF Core 正确生成中间表。


六、在 Program.cs 注册 DbContext

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDbContext < DataContext > (options = >
    options.UseSqlServer(
        builder.Configuration.GetConnectionString("DefaultConnection")));

DataContext 注入 DI 容器,即可在控制器、仓储中通过构造注入使用。


七、执行 Migrations 并更新数据库

Package Manager ConsoleCLI 中运行:

dotnet ef migrations add InitialCreate
dotnet ef database update
  • add 生成迁移代码;
  • update 将表结构同步到 SQL Server。

八、数据 Seed:预填充测试数据

  1. 在项目根目录新建 SeedService.cs,编写 SeedDataAsync(DataContext ctx),往 DbContext 中添加初始实体并调用 SaveChangesAsync()
  2. Program.cs 注入并调用:

    builder.Services.AddTransient < SeedService > ();
    var app = builder.Build();
    await app.Services.GetRequiredService < SeedService > ().SeedDataAsync();
  3. 在终端进入 API 文件夹,执行 dotnet run,检查数据库中是否已有示例数据。

小结

  • 本文涵盖 从环境安装到数据库初始化与数据预热 的 EF Core 全流程。
  • 关键步骤:获取连接字符串 → 安装 NuGet 包 → 创建 DbContext → 配置关系 → 注册 DI → 执行 Migrations → Seed。
  • 下一篇,我们将基于此完成首个实体 CRUD 接口的编写及测试。

原文引自YouTube视频:https://www.youtube.com/watch?v=EmV_IBYIlyo

#你可能也喜欢这些API文章!

我们有何不同?

API服务商零注册

多API并行试用

数据驱动选型,提升决策效率

查看全部API→
🔥

热门场景实测,选对API

#AI文本生成大模型API

对比大模型API的内容创意新颖性、情感共鸣力、商业转化潜力

25个渠道
一键对比试用API 限时免费

#AI深度推理大模型API

对比大模型API的逻辑推理准确性、分析深度、可视化建议合理性

10个渠道
一键对比试用API 限时免费