2023年6月21日发(作者:)

⾃定义动软代码模版编写这⾥使⽤的是动软的模板.这是动软代码⽣成器的⼀个整体界⾯。下⾯做的⽰例是从右边模板管理中的选⼀个模板进⾏修改,这⾥我选了简单三层模板中的模板1<#@ template language="c#"

HostSpecific="True"

#>2<#@ output extension= ".cs"

#>3<# TableHost host = (TableHost)(Host);

4string

DbParaHead=Head;

5string

DbParaDbType=DbType;

6string

preParameter=ameter;

7string

ModelSpace = ace+".Model."+ elClass(ame);

8ColumnInfo identityKey=tyKey;

9string

returnValue = "void";

10if

(identityKey!=null) {

11returnValue = ToCS(me); }#>在模板上右键,编辑查看。就能看到上⾯的代码,这是模板中⾃定义的⼀些变量。1using

System;2using

;3using

ent;4using

c;5using

;6using

DBUtility;7

8namespace

DAL <# if( > 0){ #> .<#= #><# } #>9{ <# if( > 0) {#> //<#= escription #> <# } #>

10 public

partial

class

<#= Class(ame) #>DAO {}上⾯的代码也是模板中我们⾮常熟悉的引⽤,接下来我来说下我今天要修改的内容。UPDATE功能,动软中的update功能是将⼀个实体传进去,全部修改,这⾥我把它修改成,只修改实体中存在的值1///

2/// this is a new update module3/// 4public

void

Update(<#= ModelSpace #>Entity model)

5{

6 StringBuilder strSql=new

StringBuilder();

7 List parameters = new

List();

}8先来定义两个变量,因为和实际代码中是⼀样的,所以这⾥只有⼀点,就是<# = ModelSpace#>,这个变量已经在⽂件的开头定义了,就是该模板的空间名+类名。接下来我们需要写⼀个for循环,来判断哪些代码要添加的sql语句中,哪些代码不需要。("update <#= ame #> set ");2<# for(int

i=0;i< ;i++){

3ColumnInfo c = ist[i]; #><# if

(!tity) {#>

4if(!OrEmpty(model.<#=Name#>)){

(" <#= Name #> = <#=preParameter#><#=Name#>6<# if

(i< -1 ) {#>,<#}#> ");}<# }#>7<# }#>这⾥的⼏个变量解释写<#= ame #>tity<#=preParameter#><#=Name#>.表名字段数是否主键@符号列名最后加⼀个条件语句(" where <#= reParameterExpression(, true ,) #> ");现在sql语句写好了,当时发现没有写变量;添加变量⽐较简单。只要在每个判空的条件语句后⾯添加就可以了

<# if (!tity) {#>

if(!OrEmpty(model.<#=Name#>)){ (" <#= Name #> = <#=preParameter#><#=Name#> , "); (new SqlParameter("<#=preParameter#><#=Name#>",model.<#=Name#>)); }<# }#><# }#>

添加之后,会发现所有实体的属性都被⽤OrEmpty()来判断,所以这⾥还要添加⼀个判断属性类型的条件<# if (!tity) {#>

<# if(ToCS(me)=="string") {#>if(!OrEmpty(model.<#=Name#>)){ (" <#= Name #> = <#=preParameter#><#=Name#> , "); (new SqlParameter("<#=preParameter#><#=Name#>",model.<#=Name#>)); }<# }#><# if(ToCS(me)=="int"|| ToCS(me)=="long"|| ToCS(me)=="float"|| ToCS(me)=="DateTime"|| ToCS(me)=="decimal") {#>if(model.<#=Name#>!=0){ (" <#= Name #> = <#=preParameter#><#=Name#> , "); (new SqlParameter("<#=preParameter#><#=Name#>",model.<#=Name#>)); } <#}#><#}#>

上⾯是个例⼦,具体情况具体分析。最后整体的UPDATE代码如下///

/// this is a new update module l||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| /// public bool Update(<#= ModelSpace #>Entity model) { StringBuilder strSql=new StringBuilder(); List parameters = new List(); ("update <#= ame #> set "); <# for(int i=0;i< ;i++) { ColumnInfo c = ist[i]; #> <# if (!tity) {#>

<# if(ToCS(me)=="string") {#> if(!OrEmpty(model.<#=Name#>)){ (" <#= Name #> = <#=preParameter#><#=Name#> , "); (new SqlParameter("<#=preParameter#><#=Name#>",model.<#=Name#>)); }<# }#> <# if(ToCS(me)=="bool") {#> (" <#= Name #> = <#=preParameter#><#=Name#> , "); (new SqlParameter("<#=preParameter#><#=Name#>",model.<#=Name#>)); <# }#> <# if(ToCS(me)=="int"|| ToCS(me)=="long"|| ToCS(me)=="float"|| ToCS(me)=="DateTime"|| ToCS(me)=="decimal") {#> if(model.<#=Name#>!=0){ (" <#= Name #> = <#=preParameter#><#=Name#> , "); (new SqlParameter("<#=preParameter#><#=Name#>",model.<#=Name#>)); } <#}#> <#}#> <# }#> strSql = ( - 2,2); (" where <#= reParameterExpression(, true ,) #> "); <# for(int i=0;i< ;i++) { ColumnInfo key = [i]; #> <# if (aryKey || !tity) {#> (new SqlParameter("<#=preParameter#><#=Name#>",model.<#=Name#>)); <#}#> <# }#> int rows=<#= erName#>.ExecuteSql(ng(),y()); if (rows > 0) { return true; } else { return false; } }现在项⽬中使⽤的:

2023年6月21日发(作者:)

⾃定义动软代码模版编写这⾥使⽤的是动软的模板.这是动软代码⽣成器的⼀个整体界⾯。下⾯做的⽰例是从右边模板管理中的选⼀个模板进⾏修改,这⾥我选了简单三层模板中的模板1<#@ template language="c#"

HostSpecific="True"

#>2<#@ output extension= ".cs"

#>3<# TableHost host = (TableHost)(Host);

4string

DbParaHead=Head;

5string

DbParaDbType=DbType;

6string

preParameter=ameter;

7string

ModelSpace = ace+".Model."+ elClass(ame);

8ColumnInfo identityKey=tyKey;

9string

returnValue = "void";

10if

(identityKey!=null) {

11returnValue = ToCS(me); }#>在模板上右键,编辑查看。就能看到上⾯的代码,这是模板中⾃定义的⼀些变量。1using

System;2using

;3using

ent;4using

c;5using

;6using

DBUtility;7

8namespace

DAL <# if( > 0){ #> .<#= #><# } #>9{ <# if( > 0) {#> //<#= escription #> <# } #>

10 public

partial

class

<#= Class(ame) #>DAO {}上⾯的代码也是模板中我们⾮常熟悉的引⽤,接下来我来说下我今天要修改的内容。UPDATE功能,动软中的update功能是将⼀个实体传进去,全部修改,这⾥我把它修改成,只修改实体中存在的值1///

2/// this is a new update module3/// 4public

void

Update(<#= ModelSpace #>Entity model)

5{

6 StringBuilder strSql=new

StringBuilder();

7 List parameters = new

List();

}8先来定义两个变量,因为和实际代码中是⼀样的,所以这⾥只有⼀点,就是<# = ModelSpace#>,这个变量已经在⽂件的开头定义了,就是该模板的空间名+类名。接下来我们需要写⼀个for循环,来判断哪些代码要添加的sql语句中,哪些代码不需要。("update <#= ame #> set ");2<# for(int

i=0;i< ;i++){

3ColumnInfo c = ist[i]; #><# if

(!tity) {#>

4if(!OrEmpty(model.<#=Name#>)){

(" <#= Name #> = <#=preParameter#><#=Name#>6<# if

(i< -1 ) {#>,<#}#> ");}<# }#>7<# }#>这⾥的⼏个变量解释写<#= ame #>tity<#=preParameter#><#=Name#>.表名字段数是否主键@符号列名最后加⼀个条件语句(" where <#= reParameterExpression(, true ,) #> ");现在sql语句写好了,当时发现没有写变量;添加变量⽐较简单。只要在每个判空的条件语句后⾯添加就可以了

<# if (!tity) {#>

if(!OrEmpty(model.<#=Name#>)){ (" <#= Name #> = <#=preParameter#><#=Name#> , "); (new SqlParameter("<#=preParameter#><#=Name#>",model.<#=Name#>)); }<# }#><# }#>

添加之后,会发现所有实体的属性都被⽤OrEmpty()来判断,所以这⾥还要添加⼀个判断属性类型的条件<# if (!tity) {#>

<# if(ToCS(me)=="string") {#>if(!OrEmpty(model.<#=Name#>)){ (" <#= Name #> = <#=preParameter#><#=Name#> , "); (new SqlParameter("<#=preParameter#><#=Name#>",model.<#=Name#>)); }<# }#><# if(ToCS(me)=="int"|| ToCS(me)=="long"|| ToCS(me)=="float"|| ToCS(me)=="DateTime"|| ToCS(me)=="decimal") {#>if(model.<#=Name#>!=0){ (" <#= Name #> = <#=preParameter#><#=Name#> , "); (new SqlParameter("<#=preParameter#><#=Name#>",model.<#=Name#>)); } <#}#><#}#>

上⾯是个例⼦,具体情况具体分析。最后整体的UPDATE代码如下///

/// this is a new update module l||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| /// public bool Update(<#= ModelSpace #>Entity model) { StringBuilder strSql=new StringBuilder(); List parameters = new List(); ("update <#= ame #> set "); <# for(int i=0;i< ;i++) { ColumnInfo c = ist[i]; #> <# if (!tity) {#>

<# if(ToCS(me)=="string") {#> if(!OrEmpty(model.<#=Name#>)){ (" <#= Name #> = <#=preParameter#><#=Name#> , "); (new SqlParameter("<#=preParameter#><#=Name#>",model.<#=Name#>)); }<# }#> <# if(ToCS(me)=="bool") {#> (" <#= Name #> = <#=preParameter#><#=Name#> , "); (new SqlParameter("<#=preParameter#><#=Name#>",model.<#=Name#>)); <# }#> <# if(ToCS(me)=="int"|| ToCS(me)=="long"|| ToCS(me)=="float"|| ToCS(me)=="DateTime"|| ToCS(me)=="decimal") {#> if(model.<#=Name#>!=0){ (" <#= Name #> = <#=preParameter#><#=Name#> , "); (new SqlParameter("<#=preParameter#><#=Name#>",model.<#=Name#>)); } <#}#> <#}#> <# }#> strSql = ( - 2,2); (" where <#= reParameterExpression(, true ,) #> "); <# for(int i=0;i< ;i++) { ColumnInfo key = [i]; #> <# if (aryKey || !tity) {#> (new SqlParameter("<#=preParameter#><#=Name#>",model.<#=Name#>)); <#}#> <# }#> int rows=<#= erName#>.ExecuteSql(ng(),y()); if (rows > 0) { return true; } else { return false; } }现在项⽬中使⽤的: