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

如何修改EF Power Tools脚手架以生成不同目录的仓储类?

实现EF Power Tools脚手架定制:同步生成仓储类并指定目录与命名空间

完全可行,通过扩展EF Power Tools的Handlebars模板,你可以实现同步生成仓储类,并自定义输出目录和命名空间,同时保证仓储类与实体类的数据一致性。具体步骤如下:

  • 扩展Handlebars模板支持仓储类生成
    EF Power Tools的CodeTemplates(Handlebars)允许自定义新增模板类型,你可以基于实体类生成时的元数据(如实体名称、属性、DbSet名称等)创建仓储类模板,确保两者数据完全匹配。

  • 新增仓储类模板文件
    在项目的CodeTemplates/EFCore目录下(若无则手动创建),新增Repository模板文件夹,添加两个核心文件:

    1. Repository.hbs:仓储类主体模板,示例代码如下:
      using {{namespace}}.Entity;
      using {{namespace}}.DataContext;
      using System.Linq;
      
      namespace {{namespace}}.Repository
      {
          public class {{entityName}}Repository
          {
              private readonly {{dbContextName}} _context;
      
              public {{entityName}}Repository({{dbContextName}} context)
              {
                  _context = context;
              }
      
              public IQueryable<{{entityName}}> GetAll()
              {
                  return _context.{{entitySetName}};
              }
      
              // 可按需添加更多增删改查方法
          }
      }
      
    2. Repository.csproj.hbs:用于配置项目文件,确保生成的仓储类被正确纳入项目:
      <ProjectItem Include="{{outputPath}}/{{entityName}}Repository.cs">
        <Generator>MSBuild:Compile</Generator>
        <LastGenOutput>{{entityName}}Repository.cs</LastGenOutput>
      </ProjectItem>
      
  • 配置输出目录与命名空间
    在CodeTemplates目录下创建或修改EntityFrameworkCore.ReverseEngineering.json配置文件,添加仓储类的路径和命名空间配置:

    {
      "CodeTemplates": {
        "Entity": {
          "OutputDirectory": "Entity",
          "Namespace": "{{rootNamespace}}.Entity"
        },
        "DbContext": {
          "OutputDirectory": "DataContext",
          "Namespace": "{{rootNamespace}}.DataContext"
        },
        "Repository": {
          "OutputDirectory": "Repository",
          "Namespace": "{{rootNamespace}}.Repository"
        }
      }
    }
    

    这里的{{rootNamespace}}会自动替换为你的项目根命名空间,无需手动修改。

  • 验证元数据一致性
    仓储类模板中使用的{{entityName}}、{{entitySetName}}、{{dbContextName}}等变量,都是EF Power Tools在反向工程时自动传递的元数据,完全和实体类、DbContext生成时的数据源一致,不会出现数据不匹配的问题。

  • 测试生成流程
    重新运行EF Power Tools的反向工程功能,工具会自动生成DbContext到DataContext目录、实体类到Entity目录、仓储类到Repository目录,所有文件的命名空间也会按照配置自动设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:33:20