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

如何在EF Core Scaffold-DbContext中强制自定义复数化规则

解决方案

方案1:自定义EF Core复数化服务(推荐,全自动化实现需求)

EF Core 5及以上版本支持自定义IPluralizer接口替换默认复数化逻辑,可完全适配你的特殊命名规则:

  • 第一步:提前安装NuGet包 Humanizer.Core,用于复用默认的单复数转换逻辑
  • 第二步:创建自定义复数化类,实现IPluralizer接口
using Microsoft.EntityFrameworkCore.Design;
using System.Collections.Generic;
using Humanizer;

public class CustomPluralizer : IPluralizer
{
    // 配置特殊名词的单复数映射
    private readonly Dictionary<string, string> _singularToPlural = new()
    {
        {"SaleOrderPos", "SaleOrderPoses" },
        // 其他以s结尾的特殊表名可直接在此处批量添加规则
    };
    private readonly Dictionary<string, string> _pluralToSingular = new()
    {
        {"SaleOrderPos", "SaleOrderPos" }, // 保留原始表名作为实体类名
        // 其他特殊规则同步在此处添加
    };

    public string Pluralize(string name)
    {
        if (_singularToPlural.TryGetValue(name, out var plural))
            return plural;
        return name.Pluralize(inputIsKnownToBeSingular: false);
    }

    public string Singularize(string name)
    {
        if (_pluralToSingular.TryGetValue(name, out var singular))
            return singular;
        return name.Singularize(inputIsKnownToBePlural: false);
    }
}
  • 第三步:创建自定义设计时服务工厂,让脚手架加载自定义复数化器
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.DependencyInjection;

public class CustomScaffoldingDesignTimeServices : IDesignTimeServices
{
    public void ConfigureDesignTimeServices(IServiceCollection services)
    {
        services.AddSingleton<IPluralizer, CustomPluralizer>();
    }
}

注:以上两个自定义类需要放在执行Scaffold命令的项目根目录下,脚手架会自动扫描加载

  • 第四步:运行脚手架命令时去掉-NoPluralize参数,正常执行即可:
    Scaffold-DbContext "你的数据库连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

最终生成的代码会完全符合需求:

  • 实体类名保留为SaleOrderPos
  • DbSet属性为public virtual DbSet<SaleOrderPos> SaleOrderPoses { get; set; }
  • 自动保留原表名的映射关联,不会影响数据库操作

方案2:轻量适配(仅少量特殊表时使用)

如果只有个别特殊命名的表,可以先加-NoPluralize参数生成代码后,手动修改DbContext中的DbSet属性名即可,不需要改动实体类的表映射特性,不会影响数据库关联。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:39:03