.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 个部门
相关推荐
betazhou3 小时前
Oracle ADG ,DGBroker管理,异常断电重启主备库的状态
数据库·oracle·goldengate·dgbroker
数据库生产实战4 小时前
Oracle RAC灾备环境UNDO表空间管理终极指南:解决备库修改难题与性能优化实战
数据库·oracle·性能优化
姚远Oracle ACE4 小时前
Oracle AWR案例分析:精准定位SQL执行计划切换的时间点
数据库·sql·oracle
张人玉4 小时前
C# TCP 服务器和客户端
服务器·tcp/ip·c#
睡前要喝豆奶粉4 小时前
.NET Core Web API中数据库相关配置
数据库·c#·.netcore
周杰伦fans5 小时前
C# 中 Entity Framework (EF) 和 EF Core 里的 `AsNoTracking` 方法
开发语言·c#
万事大吉CC5 小时前
SQL语法基础教程
数据库·oracle
她说彩礼65万5 小时前
C#设计模式 单例模式实现方式
单例模式·设计模式·c#
betazhou6 小时前
Oracle dgbroker常规命令管理简介
数据库·oracle·adg·dbbroker