使用变量


  变量,是一些全局的信息,比如项目名称、作者、版权、命名空间等等,也可以是一些选择控制项,比如语言、命名规则等等,每套模板都可以定义不同的变量,后面有一节会专门介绍变量的扩展。


一、基础变量

  • TabeNamingMode

  表名到类名的转换命名规则。设调了 Pascal 和 Original 两种。Pascal 表示使用帕斯卡命名,而 Original 会延续表名的命名。两种命名对比如下:

表名 Pascal 转换 Original 转换
user User user
user_role UserRole user_role
userrole Userrole userrole

  • ColumnNamingMode

  字段名到属性名的转换命名规则与 TabeNamingMode 是一样的。两种命名对比如下:

字段名 Pascal 转换 Original 转换
Id Id Id
user_id UserId user_id
roleId RoleId roleId

  • TableRegexColumnRegex

  表名到类名转换时替换规则,字段名到属性名转换时替换规则,一般应用于有前缀的表名,这实际上是一个正则替换。转换示例如下:

表名 Regex 规则 类名(Pascal 转换)
sys_user sys_ User
base_student base_ Student
TB_company TB_|TS_ Company

二、变量的操作

  大部分变量是在模板中使用的,只有少部分,比如 TabeNamingModeColumnNamingMode,在【变量】窗口里调整后是立即生效的,你可在【属性】窗口查看转换过后的表的 ClassName 或字段的 PropertyName

  调整变量后是不会持久化的,重新打开 CodeBuilder 后将恢复到之前的状态。你可以单击工具栏上的【保存】按钮进行持久化,这样重启后将加载保存后的状态。

  如果同一套模板使用到不同的项目中,你也可以单击工具栏上的【另存为文件】按钮保存将当前的配置信息保存到其他文件中,下次根据需要【打开】不同的项目配置。



三、其他模板中定义的变量

ABP + EfCore

  • Module

  模板名,一般是指子服务(项目)名。

  • SubNameSpace

  子文件夹名称,一个服务(项目)下还分多个模块,因此可以使用此变量来划分。而且可以使用.来无限扩展,如 Customer.OrderHistory,将生成 Customer\OrderHistory 子目录。

  • EntityExcludeProperties

  一般都定义的实体基类,因此会定义一些基础的属性,可以在生成时排除。使用竖线分隔,如 Id|CreateUserId|ModifyUserId|RowVersion。

  • DTOExcludeProperties

  DTO 类需要排除的基础属性,与 EntityExcludeProperties 相类似。


Fireasy + Mvc

  • Fluent

  是否使用 Fluent 方式来注册实体关系映射。传统的映射方式是通过在类和属性上添加 Attribute 来标记,但也可以使用类似 EfCore 的 ModelCreating 方式来添加映射。