1.数据库依赖
1.1.包名
|-----------------------------------------|-------------------------------------------------------|
| 包名称 | 作用 |
| Microsoft.EntityFrameworkCore | EF Core 核心库(提供数据库上下文、实体映射等基础能力) |
| Microsoft.EntityFrameworkCore.SqlServer | EF Core 针对 SQL Server 的驱动(让 EF 能连接 SQL Server) |
| Microsoft.EntityFrameworkCore.Tools | EF Core 工具库(提供 Add-Migration 、 Update-Database 等迁移命令) |
1.2.配置
步骤 1:添加连接字符串(appsettings.json)
在
appsettings.json 中添加 SQL Server 连接字符串:
cs
{
"ConnectionStrings": {
"DefaultConnection": "Server=你的SQL Server地址;Database=你的数据库名;Trusted_Connection=True;TrustServerCertificate=True;"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
- 替换 你的SQL Server地址(本地默认 localhost 或 ./SQLEXPRESS);
- 替换 你的数据库名(需提前在 SQL Server 中创建数据库)。
步骤 2:注册 DbContext(Program.cs)
在
builder.Services 中注册 EF Core 上下文(
AppDbContext):
cs
var builder = WebApplication.CreateBuilder(args);
// 注册 EF Core 上下文,关联 SQL Server 连接字符串
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
步骤 3:定义 DbContext(Data/AppDbContext.cs)
确保
Data 文件夹下的
AppDbContext.cs 正确映射数据库表:
cs
using Microsoft.EntityFrameworkCore;
using web01.Models;
namespace web01.Data;
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
// 映射数据库表(DbSet<实体> 对应表名)
public DbSet<Dept> Depts { get; set; }
public DbSet<Emp> Emps { get; set; }
// 其他表(如 Clazz、Student)按此格式添加
}
步骤 4:初始化数据库(可选:开发时用)
若需自动创建 / 更新数据库 schema,可在
Program.cs 中添加初始化逻辑:
cs
var app = builder.Build();
// 初始化数据库(开发环境用,生产环境注释)
using (var scope = app.Services.CreateScope())
{
var dbContext = scope.ServiceProvider.GetRequiredService<AppDbContext>();
dbContext.Database.EnsureCreated(); // 确保数据库存在(仅创建新表,不更新已有表)
// 或用迁移:dbContext.Database.Migrate(); // 应用所有未应用的迁移
}
app.Run();
2.Swagger(接口文档)
2.1.包名
Swashbuckle.AspNetCore
2.2.配置
步骤 1:注册 Swagger 服务(Program.cs)
在builder.Services 中添加 Swagger 相关服务(默认项目可能已包含,需确认):
cs
var builder = WebApplication.CreateBuilder(args);
// 注册 Swagger 服务(默认已生成,确保存在)
builder.Services.AddEndpointsApiExplorer(); // 支持端点探索
builder.Services.AddSwaggerGen(options => {
// 可选:配置 Swagger 文档信息(如标题、版本)
options.SwaggerDoc("v1", new() {
Title = "你的 API 名称",
Version = "v1"
});
});
步骤 2:启用 Swagger 中间件(Program.cs)
在中间件管道中启用 Swagger 页面和 JSON 文档:
cs
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger(); // 启用 Swagger JSON 文档
app.UseSwaggerUI(options => {
options.SwaggerEndpoint("/swagger/v1/swagger.json", "你的 API v1"); // 配置文档入口
}); // 启用 Swagger UI 页面
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
3.Serilog 日志
3.1.包名
Serilog.AspNetCore
3.2.配置
步骤 1:编写 Serilog 配置(Program.cs 顶部)
在
Program.cs 最顶部添加日志配置(输出到控制台和每日滚动文件):
cs
using Serilog;
// 配置 Serilog(先于其他代码执行)
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information() // 最低日志级别(Debug/Info/Warn/Error/Fatal)
.WriteTo.Console() // 输出到控制台
.WriteTo.File(
path: "logs/app.log", // 日志文件路径
rollingInterval: RollingInterval.Day, // 按天切割文件
retainedFileCountLimit: 30, // 保留最近 30 天的日志
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}" // 日志格式
)
.CreateLogger();
var builder = WebApplication.CreateBuilder(args);
步骤 2:启用 Serilog(Program.cs)
在主机配置中启用 Serilog,替换默认日志系统:
cs
var builder = WebApplication.CreateBuilder(args);
// 启用 Serilog(关键:替换默认日志)
builder.Host.UseSerilog();
步骤 3:在代码中使用日志(示例:DeptController.cs)通过依赖注入
ILogger 使用 Serilog:
cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using web01.Data;
using web01.Models;
namespace web01.Controllers;
[Route("api/[controller]")]
[ApiController]
public class DeptController : ControllerBase
{
private readonly ILogger<DeptController> _logger;
private readonly AppDbContext _dbContext;
public DeptController(ILogger<DeptController> logger, AppDbContext dbContext)
{
_logger = logger;
_dbContext = dbContext;
}
[HttpGet]
public async Task<ActionResult<IEnumerable<Dept>>> GetAll()
{
_logger.LogInformation("开始查询所有部门");
var depts = await _dbContext.Depts.ToListAsync();
_logger.LogDebug($"查询到 {depts.Count} 个部门");
return Ok(depts);
}
}
效果验证启动项目后,控制台和
logs/app.log 文件会输出类似以下日志:
cs
2025-10-15 16:20:00.123 [INF] 开始查询所有部门
2025-10-15 16:20:00.456 [DBG] 查询到 5 个部门