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

EF Core 3.1 Database First模式下如何将复数实体类名转为单数

EF Core 3.1 Database First 模式生成单数实体类名配置方案

方案一:使用官方推荐第三方复数化工具(操作最简单)

  • 首先安装两个NuGet包,注意版本要和你使用的EF Core 3.1.2对齐:
    1. Microsoft.EntityFrameworkCore.Design 3.1.2版本
    2. Bricelam.EntityFrameworkCore.Pluralizer 适配3.1的版本
  • 安装完成后直接执行你原来的脚手架命令即可,无需修改命令参数:
    Scaffold-DbContext "connection string" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context ApplicationDbContext
  • 执行完成后即可得到单数命名的实体类,同时DbContext中的DbSet属性仍保持复数形式,符合常规编码规范。

方案二:自定义复数化服务(无需依赖第三方包)

如果不想引入第三方包,可以自己实现EF Core的复数化服务接口:

  1. 首先在项目中添加System.Data.Entity.Design程序集引用,然后创建自定义复数化类:
using Microsoft.EntityFrameworkCore.Design;
using System.Globalization;
using System.Data.Entity.Design.PluralizationServices;

namespace 你的项目命名空间
{
    public class CustomNamePluralizer : IPluralizer
    {
        private readonly PluralizationService _service = PluralizationService.CreateService(CultureInfo.GetCultureInfo("en-US"));

        // 单数转复数,用于生成DbSet属性名
        public string Pluralize(string name)
        {
            return _service.Pluralize(name);
        }

        // 复数转单数,用于生成实体类名
        public string Singularize(string name)
        {
            return _service.Singularize(name);
        }
    }
}
  1. 再创建设计时服务注册类,用来把你的自定义复数化器注入到EF Core脚手架服务中:
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.DependencyInjection;

namespace 你的项目命名空间
{
    public class ScaffoldDesignTimeService : IDesignTimeServices
    {
        public void ConfigureDesignTimeServices(IServiceCollection services)
        {
            services.AddSingleton<IPluralizer, CustomNamePluralizer>();
        }
    }
}
  1. 完成上述配置后,执行原来的脚手架命令,即可生成单数命名的实体类。

注意事项

  • 所有EF Core相关依赖的版本必须和你使用的3.1.2版本完全一致,避免出现版本兼容导致的功能失效问题
  • 执行脚手架前建议先清空之前生成的Models文件夹内容,避免旧文件和新生成的文件冲突
  • 不规则英文名词(比如people、children)会按照英语语法规则自动转换,如有特殊命名需求可以在Singularize方法中添加自定义判断逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:24:04