动软代码生成V2.74模版简介

news/2024/7/5 4:42:12

  最近发现很多人用动软代码生成,确实方便,有些经验记录下,以后查看回顾。

  ..\Maticsoft\Codematic2\Template\TemplateFile 为模板文件夹,直接在目录下新建文件夹【我的自定义模版】,有个【模版示例.cmt】也直接复制到自定义文件下好了。在动软模版管理代码模板右键刷新就看见了,选择模板右键编辑并查看进入模板编辑。

 

<#@ template language="c#" HostSpecific="True" #>
<#@ output extension= ".cs" #>
<#TableHost host = (TableHost)(Host);host.Fieldlist.Sort(CodeCommon.CompareByintOrder);
#>

 

语言是C#,输出文件是.cs,没啥好说的。TableHost  host 就是当前的表信息,主要使用字段集合,下面的代码 host.Fieldlist 就是列的集合.Sort给集合排序。这里要注意模版代码的格式 <# #> 在这里的代码为模版识别的代码,不在这里的就是写啥生成啥。

  基本语法知道了,下面我给出我的message生成代码分析下,循环列按固定格式生成。

	<# foreach (ColumnInfo c in host.Fieldlist){ #>
private string _str<#= c.ColumnName.ToString().Split('_')[2] #>;// <#=  c.Description #>  <# } #><# foreach (ColumnInfo c in host.Fieldlist){ #>/// <summary>/// <#= c.Description == "" ? c.ColumnName : c.Description #>/// </summary>		public string str<#= c.ColumnName.ToString().Split('_')[2] #>{get{ return ((!string.IsNullOrEmpty(_str<#= c.ColumnName.ToString().Split('_')[2]#>)) ?_str<#= c.ColumnName.ToString().Split('_')[2]#>: ""); }set{ _str<#= c.ColumnName.ToString().Split('_')[2]#> = value; }}    <# } #>


 

支持语言是C# 当然有foreach 而 host.Fieldlist列集合的类型就是ColumnInfo 这里定义c 要注意<# #>格式。c.ColumeName为列名称可以.ToString()可以分组Split,c.Description为得到备注信息及数据库里字段说明,这个很有用,省着自己看不明白。第二段有了个三元表达式 如果说明为空则输出列名,注意标签<#= #>这里多个了= 表示输出不是处理代码。到最后注意 <# } #> 表示foreach的结束。关于.Split('_')[2]就是数据库字段的设计了,不细说。<#= host.GetModelClass(host.TableName) #>为输出表名。还有的判断用到了参数,设置个<#int i#>记录换行,<#if(i==5){i=0;#>");<#="\n"#><#}#> 记录和输出换行。

  主要就是理解模板输出不在标签里的就是些啥输出啥,我一般就是把写好的代码都粘到模板里然后哪是动态的改哪。关于直接生成三层框架,这个跟自己的代码规范和数据库设计有关没有什么通用的地方,就不说明了。

 

转载于:https://www.cnblogs.com/shiworkyue/p/3845322.html


http://lihuaxi.xjx100.cn/news/248474.html

相关文章

mysql (双主,互主)

Master-Master&#xff08;双主&#xff09; 1、测试环境 Master/Slave Master1/Slave1 IP 192.168.1.13 192.168.1.10 为了保持干净的环境&#xff1a;两边服务器 rm -rf /var/lib/mysql/* service mysqld re…

6. matlab中case语句的使用

&#xff08;1&#xff09;单个的就如同C语言中的一样&#xff0c;不过在和switch使用的时候case后不用接&#xff1a; n input(Enter a number: );switch ncase -1disp(negative one)case 0disp(zero)case 1disp(positive one)otherwisedisp(other value) end&#xff08;2&a…

matplotlib使用笔记

1. 简要介绍 matplotlib是一个用于画图的Python开源库&#xff0c;提供了强大的画图功能 与MATLAB相比 功能类似&#xff0c;但使用上逊于MATLAB。尤其在数据量很大时&#xff0c;画出的图卡顿很严重&#xff0c;远逊于MATLAB 与Excel相比 如果只画一次图&#xff0c;Excel更…

Bootstrap3.x - 源代码分析

参照http://v3.bootcss.com/css/ 文档与源代码colors 比较全面定义总结有意义的颜色。所有uI要用的颜色&#xff0c;都先从已定义的读&#xff0c;这样保证样式的同一性&#xff0c;而且方便以后开发主题库。(建议想自己写css模块的&#xff0c;可以参考一下bootstrap里颜色定义…

Word 2003文件保存和另存为操作是否熟练掌握的有关测试

提出问题本文内容不仅适用于Word&#xff0c;对于其他的文档&#xff08;文字、图形、动画、声音等&#xff09;编辑软件基本通用。对于操作上述各种编辑软件时&#xff0c;大家都应该注意到&#xff0c;我们第一次保存文件时系统出现的是“另存为”对话框。此后&#xff0c;再…

7.matlab中使用@ + “函数名”

总是会面临&#xff0c;根据选择的不同的值&#xff0c;获得不同 函数。就类似于switch 中的问题 switch Fcase F1fobj F1;lb-100;ub100;dim30;case F2fobj F2lb-10;ub10;dim30;end function o F1(x) % o sum(x.^2); This is the advantage of matrix osum((x)…

pyspatialite

1. 头文件 import psycopg2 2. 数据库连接 2.1. 本地数据库连接 connect sqlite3.connect(file_name) connect.load_extension(mod_spatialite) cursor connect.cursor() 2.2. 远程数据库连接 connect psycopg2.connect(databasedatabase, useruser, passwordpassword…

解决远程桌面无法连接问题

如果 出现的提示如下&#xff1a;---------------------------中断远程桌面连接---------------------------客户端无法建立跟远程计算机的连接。导致这个错误的可能的原因是:1) 远程计算机上的远程连接可能没有启用。2) 已超出远程计算机上的连接最大数。3) 建立连接时出现了一…