能否让Entity Framework将脚手架映射拆分至多个类而非单一文件?
解决EF Core脚手架生成超大上下文文件的方案
可以自动实现,推荐两种高效方式:
方式一:自定义EF Core脚手架模板
EF Core支持通过自定义模板调整生成文件的结构,步骤如下:
- 先安装EF Core模板包:
dotnet new install Microsoft.EntityFrameworkCore.Templates
- 导出默认脚手架模板到本地目录:
dotnet new scaffoldcontext -n CustomScaffold -o ./CustomScaffoldTemplates
- 修改导出的
DbContext.t4模板,将原本写在上下文类里的实体配置代码,改为引用单独的配置类;同时修改或新增EntityTypeConfiguration.t4模板,让每个实体生成一个继承IEntityTypeConfiguration<T>的配置文件,输出到Mapping文件夹。 - 用自定义模板重新执行脚手架命令:
Scaffold-DbContext "Data Source=COMPUTER; Initial Catalog=DatabaseName; Persist Security Info=True; User ID=USER; Password=PASSWORD; trustServerCertificate=true;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -force -Template ./CustomScaffoldTemplates/DbContext.t4 -EntityTemplate ./CustomScaffoldTemplates/EntityTypeConfiguration.t4
方式二:使用EF Core Power Tools工具
这是更简单的可视化操作方案:
- 在Visual Studio中安装EF Core Power Tools扩展
- 右键项目选择「EF Core Power Tools」→「Reverse Engineer」
- 配置数据库连接后,勾选「Generate separate configuration classes」选项,指定输出目录为
Mapping,执行后就能自动生成每个表对应的单独映射文件
手动拆分(仅适合小型项目)
如果不想折腾工具或模板,也可以手动拆分:
- 新建
Mapping文件夹,为每个实体创建XXXMapping.cs文件,继承IEntityTypeConfiguration<XXX> - 把上下文文件
OnModelCreating方法中对应该实体的配置代码,复制到映射类的Configure方法里 - 在上下文的
OnModelCreating中调用modelBuilder.ApplyConfiguration(new XXXMapping()),替换原来的内联配置 - 逐个处理所有实体即可
内容的提问来源于stack exchange,提问作者m0a
相关产品推荐
相关产品推荐

