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

Telosys 4.2.0 C# CRUD生成:非实体类重复生成及参数疑问

Telosys 4.2.0 实现仅生成未存在文件的解决方案

关于模板*标记的说明

Telosys中的*标记用于标识实体关联模板,表示该模板会为每个实体生成对应文件。不带*的属于全局模板,默认执行gen Product *时,Telosys会同时触发所有实体关联模板和全局模板,这就是你执行命令后生成全部7个文件的原因。

实现跳过已存在文件的两种方式

Telosys 4.2.0没有内置类似-ifnew的参数,但可以通过以下方式实现需求:

  1. 拆分模板组,分离实体与全局模板

    • 将3个带*的实体专属模板(Entity、Controller、Service)单独放在一个子模板组(比如命名为csharp-entity)
    • 将4个全局模板(IGenericRepository、Repository、UnitOfWork、IUnitOfWork)放在另一个子模板组(比如csharp-global)
    • 生成实体文件时执行:gen Product csharp-entity,仅生成实体相关文件
    • 全局模板只需执行一次:gen * csharp-global,后续不再重复执行该命令
  2. 在全局模板中添加文件存在判断逻辑

    • 在每个全局模板的开头添加Telosys的文件存在判断,示例(以igenericrepository_cs.vm为例):
      #if (!file_exists("Repositories/IGenericRepository.cs"))
      // 模板原有内容(比如接口定义代码)
      public interface IGenericRepository<T> where T : class
      {
          // ... 接口方法
      }
      #end
      
    • 这样每次执行gen Product *或gen * *时,Telosys会先检查目标文件是否存在,已存在则跳过生成,仅生成不存在的文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:42:13