
Python与Ollama的开发案例
## 引言
在现代软件开发中,数据库表与代码之间的“格式不匹配”常常让开发者头疼。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` 便可快速安装所需包。
3. **所需 NuGet 包**
“`bash
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`,内容如下:

“`csharp
using Microsoft.EntityFrameworkCore;
namespace MyEfCoreApp.Data
{
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions
: base(options)
{
}
// 在此声明要映射的表
public DbSet
public DbSet
}
}
“`
3. 同目录下定义实体类 `Stock` 与 `Comment`,例如:
“`csharp
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:

“`csharp
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`(或自定义名称)。

2. **在 `appsettings.json` 中添加连接字符串**
“`json
{
“ConnectionStrings”: {
“DefaultConnection”: “Server=YOUR_DESKTOP_NAME;Database=FinShark;Trusted_Connection=True;TrustServerCertificate=True;Encrypt=False;”
},
// … 其他配置
}
“`

* `Server`:你的本地服务器实例名称(在 SSMS 中可见)。
* `Database`:与你在 SSMS 中新建的数据库名一致。
* `Trusted_Connection=True` 与 `Encrypt=False` 保证本地开发时连接顺畅。
—
## 五、执行 EF Core 迁移
EF Core 迁移(Migrations)用于生成建库脚本并更新数据库结构。
1. **添加首次迁移**
“`bash
dotnet ef migrations add Init
“`
* 该命令会在项目中生成 `Migrations` 文件夹,包含用于构建数据库的 C# 脚本。
2. **更新数据库**
“`bash
dotnet ef database update
“`
* 真正将迁移脚本应用到 SQL Server,创建表结构。
3. **验证结果**
* 在 SSMS 中右击数据库 → 刷新 → 展开 “Tables” 可见 `Stocks`、`Comments` 以及 `__EFMigrationsHistory` 表。

* 可右击某表 → “Select Top 1000 Rows” 查看空表结构是否符合预期。
—
## 小结与下一步
至此,你已完成以下工作:
* 安装必要的 NuGet 包(**EF Core SqlServer**、**Tools**、**Design**)
* 创建并配置 `ApplicationDbContext`,声明 `DbSet
* 在 `Program.cs` 中注册 DbContext,绑定连接字符串
* 在 SSMS 中新建数据库,并在 `appsettings.json` 中配置 `ConnectionStrings`
* 通过 `dotnet ef migrations add` 与 `dotnet ef database update` 完成首次 EF Core 迁移
接下来,你可以基于此基础实现对 `Stocks` 和 `Comments` 的增删改查操作,并深入了解 **Deferred Execution**、**Fluent API** 或 **Data 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