.NET Core Web API开发需引入的三个基本依赖配置说明

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 个部门
相关推荐
RobinDevNotes8 小时前
一套代码发布到十几个平台:Cocos入门速览
typescript·c#·游戏开发
阿松爱学习11 小时前
【Unity开发】监听Scene场景事件
unity·c#
dishugj11 小时前
Oracle物理体系结构
数据库·oracle
北亚数据恢复11 小时前
【数据库数据恢复】NDF文件变0KB、数据库损坏?超大数据库数据恢复案例
数据库·oracle
姚远Oracle ACE12 小时前
对比测试了 openGauss、PostgreSQL、Oracle、MySQL 的CPU 指令数
mysql·postgresql·oracle
jnrjian15 小时前
Oracle PG data type 数据类型转化
oracle
Lucifer三思而后行17 小时前
Oracle library cache 等待怎么查?Lock、Pin、Mutex 一次讲清楚
oracle·lock
天天代码码天天20 小时前
屏幕翻拍满是彩色条纹?用 C# + Vulkan 做了一个去摩尔纹工具,支持单图与文件夹批量
c#·去摩尔纹
2501_9307077820 小时前
使用C#代码在 Word 文档中添加、插入或删除页面
开发语言·c#·word