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

EF Core 8数据库优先Scaffolding:如何仅生成实体类?

EF Core 8 Database First 避免冗余集合属性的方案

不用每次生成后手动删除冗余内容,有几个更高效的处理方式:

  • 用脚手架参数直接禁用导航属性
    执行Scaffold-DbContext命令时加上--no-navigation-properties参数,生成的实体类只会包含表字段对应的属性,不会自动生成任何外键关联的集合或引用导航。示例命令:

    Scaffold-DbContext "Server=.;Database=YourDB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -NoNavigationProperties
    

    之后你可以像Code First那样,手动在实体类和DbContext里添加自己需要的导航属性与关系配置,完全掌控关联逻辑。

  • 自定义脚手架模板
    EF Core的实体生成基于T4模板,你可以复制默认模板(在对应EF Core NuGet包的tools目录中,如EntityType.cs.t4),修改模板里的导航属性生成代码,添加过滤规则——比如只保留你需要的关联集合,或者排除特定表的外键关联。修改完成后,用--template参数指定自定义模板生成实体,每次生成的内容都会符合你的要求。

  • 批量清理生成后的代码
    如果偶尔需要保留部分导航,不想完全禁用,可以用正则表达式批量删除冗余集合属性。比如在IDE中用查找替换功能,匹配类似public virtual ICollection<XXX> XXX { get; set; } = new List<XXX>();的行,批量替换为空,比手动删除效率高很多。

  • 混合开发模式
    先用-NoNavigationProperties生成基础实体类和DbContext的DbSet,再按照你熟悉的Code First流程,手动添加必要的导航属性、配置Fluent API关系,最后处理DTO映射。这种方式既利用了Database First快速生成实体结构的优势,又保留了Code First对实体关系的控制权,很适合习惯Code First的开发者。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:01:10