所有文章 > API使用场景 > ASP.NET Core 8 Web API EF Core 实践指南(第3课)
ASP.NET Core 8 Web API EF Core 实践指南(第3课)

ASP.NET Core 8 Web API EF Core 实践指南(第3课)

引言

在现代软件开发中,数据库表与代码之间的“格式不匹配”常常让开发者头疼。Excel 表格虽然直观,但无法直接在代码中操作;原始数据库表也并非开发者友好的结构。

为此,ORM(对象关系映射)应运而生。Entity Framework Core(EF Core) 作为 .NET 平台上成熟的 ORM 框架,能够将数据库表映射成 C# 对象,简化数据访问与操作。本文将以 .NET 8 为示例,带你从零搭建 EF Core 与 SQL Server 的基础配置,并执行首次迁移,帮助你快速入门 EF Core。


一、环境与前置准备

  1. .NET 8 项目

    • 确保已安装 .NET SDK 8.0,并已在命令行执行 dotnet new webapi -n MyEfCoreApp 创建一个 Web API 项目。
  2. VS Code 与 NuGet Gallery 插件

    • 打开 VS Code,按 Ctrl+Shift+X 搜索 “NuGet Gallery”,点击安装。

  • 安装完成后,按 Ctrl+Shift+P,输入 NuGet: Add Package 便可快速安装所需包。
  1. 所需 NuGet 包

    dotnet add package Microsoft.EntityFrameworkCore.SqlServer
    dotnet add package Microsoft.EntityFrameworkCore.Tools
    dotnet add package Microsoft.EntityFrameworkCore.Design

    > 提示: 如果使用 .NET 7,将 SqlServer 包版本对齐为 EF Core 7.x。


二、创建 ApplicationDbContext

在项目根目录下:

  1. 新建文件夹 Data

  2. Data 中新增 ApplicationDbContext.cs,内容如下:

   using Microsoft.EntityFrameworkCore;

   namespace MyEfCoreApp.Data
   {
       public class ApplicationDbContext : DbContext
       {
           public ApplicationDbContext(DbContextOptions < ApplicationDbContext > options)
               : base(options)
           {
           }

           // 在此声明要映射的表
           public DbSet < Stock > Stocks { get; set; }
           public DbSet < Comment > Comments { get; set; }
       }
   }
  1. 同目录下定义实体类 StockComment,例如:

    public class Stock
    {
       public int Id { get; set; }
       public string Symbol { get; set; }
       public decimal Price { get; set; }
    }
    
    public class Comment
    {
       public int Id { get; set; }
       public int StockId { get; set; }
       public string Content { get; set; }
    }


三、在 Program.cs 中注册 DbContext

打开 Program.cs,在调用 builder.Build() 之前,添加以下代码以注册 EF Core DbContext:

using MyEfCoreApp.Data;
using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);

// 从 appsettings.json 读取名为 "DefaultConnection" 的连接字符串
builder.Services.AddDbContext < ApplicationDbContext > (options = >
    options.UseSqlServer(
        builder.Configuration.GetConnectionString("DefaultConnection")
    )
);

var app = builder.Build();
// … 其他中间件或路由配置
app.Run();

> 注意: 一定要保证 AddDbContext 调用在 builder.Build() 之前,否则无法正确注入。


四、SQL Server 数据库配置

  1. 在 SQL Server Management Studio(SSMS)中新建数据库

    • 启动 SSMS → 右击 “Databases” → “New Database…” → 名称设为 FinShark(或自定义名称)。

  1. appsettings.json 中添加连接字符串

    {
     "ConnectionStrings": {
       "DefaultConnection": "Server=YOUR_DESKTOP_NAME;Database=FinShark;Trusted_Connection=True;TrustServerCertificate=True;Encrypt=False;"
     },
     // … 其他配置
    }

  • Server:你的本地服务器实例名称(在 SSMS 中可见)。
  • Database:与你在 SSMS 中新建的数据库名一致。
  • Trusted_Connection=TrueEncrypt=False 保证本地开发时连接顺畅。

五、执行 EF Core 迁移

EF Core 迁移(Migrations)用于生成建库脚本并更新数据库结构。

  1. 添加首次迁移

    dotnet ef migrations add Init
    • 该命令会在项目中生成 Migrations 文件夹,包含用于构建数据库的 C# 脚本。
  2. 更新数据库

    dotnet ef database update
    • 真正将迁移脚本应用到 SQL Server,创建表结构。
  3. 验证结果

    • 在 SSMS 中右击数据库 → 刷新 → 展开 “Tables” 可见 StocksComments 以及 __EFMigrationsHistory 表。

  • 可右击某表 → “Select Top 1000 Rows” 查看空表结构是否符合预期。

小结与下一步

至此,你已完成以下工作:

  • 安装必要的 NuGet 包(EF Core SqlServerToolsDesign
  • 创建并配置 ApplicationDbContext,声明 DbSet < T >
  • Program.cs 中注册 DbContext,绑定连接字符串
  • 在 SSMS 中新建数据库,并在 appsettings.json 中配置 ConnectionStrings
  • 通过 dotnet ef migrations adddotnet ef database update 完成首次 EF Core 迁移

接下来,你可以基于此基础实现对 StocksComments 的增删改查操作,并深入了解 Deferred ExecutionFluent APIData Seeding 等高级功能,为你的 API 增强更多业务逻辑和性能优化。


SEO 关键词回顾:

  • Entity Framework Core 教程
  • .NET 8 EF Core 快速入门
  • EF Core SQL Server 迁移
  • 如何在 .NET 项目中配置 ApplicationDbContext
  • dotnet ef migrations add 与 database update 区别

希望本文能帮助你快速上手 EF Core 与 SQL Server 集成!

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

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

我们有何不同?

API服务商零注册

多API并行试用

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

查看全部API→
🔥

热门场景实测,选对API

#AI文本生成大模型API

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

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

#AI深度推理大模型API

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

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