You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Swagger识别并标记模型的[Key]主键属性?

让Swagger自动识别实体类的[Key]注解并标注主键(.NET 6 + Visual Studio 2022)

Swagger默认确实不会识别EF Core的[Key]特性来标记主键,要实现自动识别,只需要自定义一个Schema过滤器即可,步骤如下:

1. 创建自定义Schema过滤器类

新建一个类实现ISchemaFilter,在方法里扫描实体类的属性,识别带[Key]注解的字段并修改Swagger的属性描述:

using Microsoft.EntityFrameworkCore;
using Swashbuckle.AspNetCore.SwaggerGen;
using System.Reflection;

public class KeySchemaFilter : ISchemaFilter
{
    public void Apply(Microsoft.OpenApi.Models.OpenApiSchema schema, SchemaFilterContext context)
    {
        if (context.Type == null) return;

        // 筛选出带有[Key]特性的属性
        var keyProperties = context.Type.GetProperties()
            .Where(p => p.GetCustomAttribute<KeyAttribute>() != null);

        foreach (var prop in keyProperties)
        {
            if (schema.Properties.TryGetValue(prop.Name, out var propertySchema))
            {
                // 在属性描述后追加“(主键)”标识
                propertySchema.Description = string.IsNullOrEmpty(propertySchema.Description)
                    ? "(主键)"
                    : $"{propertySchema.Description}(主键)";
            }
        }
    }
}

2. 注册过滤器到Swagger配置

在Program.cs的Swagger服务配置中,添加这个自定义过滤器:

builder.Services.AddSwaggerGen(c =>
{
    // 你的其他Swagger配置(比如文档信息、注释路径等)
    c.SchemaFilter<KeySchemaFilter>();
});

3. 验证效果

启动项目后打开Swagger文档页面,查看对应GET接口的返回模型,带[Key]注解的属性会自动显示“(主键)”标识,不用再手动写三斜杠注释来标注。

如果需要更个性化的展示(比如特殊样式标记),可以修改过滤器中对propertySchema的处理逻辑,比如添加自定义扩展字段,但修改描述是最直接适配默认Swagger UI的方案。

内容的提问来源于stack exchange,提问作者JustLooking

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 11:56:00