
Python與Ollama的開發案例
Controllers
文件夾。Controllers
中添加 StockController.cs
,并命名為 StockController
,以便后續針對 Stock
模型分離關注點。namespace MyEfCoreApp.Controllers
{
public class StockController : ControllerBase
{
// 后續補充代碼
}
}
ControllerBase
并添加 [ApiController]
、[Route("api/[controller]")]
注解:ApplicationDbContext
,并聲明為只讀字段,避免不必要的可變風險。[ApiController]
[Route("api/[controller]")]
public class StockController : ControllerBase
{
private readonly ApplicationDbContext _context;
public StockController(ApplicationDbContext context)
{
_context = context;
}
// 列表與詳情方法在下一節實現
}
使用 [HttpGet]
定義 GET /api/stock
,通過 _context.Stocks.ToListAsync()
獲取所有記錄。
Deferred Execution:在調用 ToListAsync()
前,查詢尚未執行;只有在取列表時才生成 SQL 并發送。
[HttpGet]
public async Task<ActionResult<IEnumerable<Stock>>> GetStocks()
{
return await _context.Stocks.ToListAsync();
}
使用 [HttpGet("{id}")]
定義 GET /api/stock/{id}
,通過 FindAsync(id)
按主鍵查詢單條記錄,并處理未找到的情況。
[HttpGet("{id}")]
public async Task<ActionResult<Stock>> GetStock(int id)
{
var stock = await _context.Stocks.FindAsync(id);
if (stock == null)
return NotFound();
return stock;
}
打開 Program.cs
,在構建應用之前,添加對 Controllers 的注冊與映射:
var builder = WebApplication.CreateBuilder(args);
// 已注冊 DbContext(略)…
builder.Services.AddControllers();
var app = builder.Build();
app.MapControllers();
app.Run();
未調用 AddControllers()
與 MapControllers()
會導致 Swagger 無法識別你的端點并出現 HTTPS 重定向錯誤。
在 SSMS 中插入測試數據
Stocks
表 → 右鍵 “Edit Top 200 Rows” → 手動添加幾條示例記錄(如 Tesla、VTI 等)。使用 Swagger 測試 API
/api/stock
,確認能拿到所有記錄 → 再嘗試輸入某條記錄的 ID 調用 /api/stock/{id}
。完成了 API Controllers 的基本搭建:
StockController
Program.cs
注冊并映射 Controllers原文引自YouTube視頻:https://www.youtube.com/watch?v=cSnoAGHKVus