Telosys 4.2.0 C# CRUD生成:非实体类重复生成及参数疑问
Telosys 4.2.0 实现仅生成未存在文件的解决方案
关于模板*标记的说明
Telosys中的*标记用于标识实体关联模板,表示该模板会为每个实体生成对应文件。不带*的属于全局模板,默认执行gen Product *时,Telosys会同时触发所有实体关联模板和全局模板,这就是你执行命令后生成全部7个文件的原因。
实现跳过已存在文件的两种方式
Telosys 4.2.0没有内置类似-ifnew的参数,但可以通过以下方式实现需求:
拆分模板组,分离实体与全局模板
- 将3个带
*的实体专属模板(Entity、Controller、Service)单独放在一个子模板组(比如命名为csharp-entity) - 将4个全局模板(IGenericRepository、Repository、UnitOfWork、IUnitOfWork)放在另一个子模板组(比如
csharp-global) - 生成实体文件时执行:
gen Product csharp-entity,仅生成实体相关文件 - 全局模板只需执行一次:
gen * csharp-global,后续不再重复执行该命令
- 将3个带
在全局模板中添加文件存在判断逻辑
- 在每个全局模板的开头添加Telosys的文件存在判断,示例(以
igenericrepository_cs.vm为例):#if (!file_exists("Repositories/IGenericRepository.cs")) // 模板原有内容(比如接口定义代码) public interface IGenericRepository<T> where T : class { // ... 接口方法 } #end - 这样每次执行
gen Product *或gen * *时,Telosys会先检查目标文件是否存在,已存在则跳过生成,仅生成不存在的文件
- 在每个全局模板的开头添加Telosys的文件存在判断,示例(以
内容的提问来源于stack exchange,提问作者saibin
相关产品推荐
相关产品推荐

