亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

CodeSmith自己動手寫模板

2019-11-17 01:53:52
字體:
來源:轉載
供稿:網友

CodeSmith自己動手寫模板

CodeSmith學習筆記------

1.新建一個Code Smith Generator Template(C sharp)

2.一些常見標簽的解釋:

①外部變量:

<%@ PRoperty Name="SampleStringProperty" Default="SomeValue" Type="System.String" %>

表示定義一個string類型的外部變量,在需要在生成的時候才輸入,此屬性有默認值,也可以由用戶在右下角的屬性欄里修改屬性的值。

還有Optional:是否允許為空(即不輸入),Category:是說你聲明的這個屬性的類別(CodeSmith會按分類分開展示讓你輸入)。

②與數據庫交互

CodeSmith與數據庫的聯系,在CodeSmith中自帶一個程序集SchemaExplorer.dll,這個程序集中的類主要用于獲取數據庫中各種對象的結構。

1 <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Optional="False" Descr
Assembly:引用程序集,Import:相當于using命名空間。
Type="SchemaExplorer.DatabaseSchema"此類型會在屬性欄生成一個數據庫的選擇框,Type="SchemaExplorer.TableSchema"即表的選擇框。③自定義方法:
1 <script runat="template">2 // My methods here.3 public string SampleMethod()4 {5   return "Method output.";6 }7 </script>
<script runat="template"></script>標簽內寫的是自定義函數(C#代碼)④模板部分書寫:C#代碼要用<%%>包括,值類型要使用<%=%>例如:生成一個Model層的模板
 1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4  5 Namespace Model 6 { 7     Class <%=TargetTable.Name%> 8     { 9         <%  for (int i=0;i<TargetTable.Columns.Count;i++)10         {11             SchemaExplorer.ColumnSchema col = TargetTable.Columns[i];%>12             public <%=col.SystemType%> <%=col.Name%>{get;set;}13       <%}%>14     }15 }

⑤一份完整的DAL的模板示例:

  1 <%@ CodeTemplate Language="C#" TargetLanguage="C#"   2     Src="ToolsCodeTemplate.cs" Inherits="ToolsCodeTemplate"%>  3 <%@ Property Name="TargetTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="TargetTable that the object is based on." %>  4 <%@ Property Name="ModelsNamespace" Default="MyOffice.Models" Type="System.String" Category="Context" Description="TargetTable that the object is based on." %>  5 <%@ Property Name="DALNamespace" Default="MyOffice.DAL" Type="System.String" Category="Context" Description="TargetTable that the object is based on." %>  6 <%@ Property Name="DALClassNameSurfix" Default="Service" Type="System.String" Category="Context" Description="TargetTable that the object is based on." %>  7 <%@ Assembly Name="SchemaExplorer" %>  8 <%@ Assembly Name="System.Data" %>  9 <%@ Import Namespace="SchemaExplorer" %> 10 <%@ Import Namespace="System.Data" %> 11 <%@ Import Namespace="System.Text.RegularExpressions" %> 12 <% PrintHeader(); %> 13 using System; 14 using System.Collections.Generic; 15 using System.Text; 16 using System.Data; 17 using System.Data.SqlClient; 18 using <%= ModelsNamespace %>; 19  20 namespace <%= DALNamespace %> 21 { 22     public partial class <%= GetDALClassName() %> 23     { 24         <%-- public static Book AddBook(Book book) --%> 25         public <%= GetModelClassName() %> Add 26             (<%= GetModelClassName() %> <%= GetModelParamName() %>) 27         { 28             <%if(IsIdentityPK()) 29             {%> 30                 string sql ="<%= GetAutoIncInsertSQLLine()%>"; 31                 SqlParameter[] para = new SqlParameter[] 32                     { 33                         <% 34                         for(int i=0; i<TargetTable.NonPrimaryKeyColumns.Count; i++) 35                         { 36                             ColumnSchema column = TargetTable.NonPrimaryKeyColumns[i]; 37                              38                         %> 39                         new SqlParameter("@<%= column.Name %>", ToDBValue(<%= GetModelParamName() %>.<%= column.Name %>)), 40                         <% 41                         } 42                         %> 43                     }; 44                      45                 <%= GetPKPropertyType() %> newId = (<%= GetPKPropertyType() %>)SqlHelper.ExecuteScalar(sql, para); 46                 return GetBy<%= GetPKPropertyName() %>(newId); 47             <%}else 48             {%> 49                 string sql ="<%= GetCommonInsertSQLLine()%>"; 50                 SqlParameter[] para = new SqlParameter[] 51                     { 52                         <% 53                         for(int i=0; i<TargetTable.Columns.Count; i++) 54                         { 55                             ColumnSchema column = TargetTable.Columns[i];                             56                         %> 57                         new SqlParameter("@<%= column.Name %>", ToDBValue(<%= GetModelParamName() %>.<%= column.Name %>)), 58                         <% 59                         } 60                         %> 61                     }; 62                 SqlHelper.ExecuteNonQuery(sql, para); 63                 return <%= GetModelParamName() %>;                 64             <%}%> 65         } 66  67         <%-- public static bool DeleteBookById(int id) --%> 68         public int DeleteBy<%= GetPKPropertyName() %>(<%= GetPKPropertyType() %> <%= GetPKParamName() %>) 69         { 70             string sql = "DELETE <%= TargetTable.Name %> WHERE <%= GetPKPropertyName() %> = @<%= GetPKPropertyName() %>"; 71  72            SqlParameter[] para = new SqlParameter[] 73             { 74                 new SqlParameter("@<%= GetPKName() %>", <%= GetPKParamName() %>) 75             }; 76          77             return SqlHelper.ExecuteNonQuery(sql, para); 78         } 79          80                  81         <%-- public static bool ModifyBook(Book book) --%> 82         public int Update(<%= GetModelClassName() %> <%= GetModelParamName() %>) 83         { 84             string sql = 85                 "UPDATE <%= TargetTable.Name %> " + 86                 "SET " + 87             " <%= TargetTable.NonPrimaryKeyColumns[0].Name %> = @<%= TargetTable.NonPrimaryKeyColumns[0].Name %>"  88             <% 89             for(int i=1; i<TargetTable.NonPrimaryKeyColumns.Count; i++) 90             { 91                 ColumnSchema column = TargetTable.NonPrimaryKeyColumns[i];                 92             %> 93                 +", <%= column.Name %> = @<%= column.Name %>"  94             <% 95             } 96             %> 97                 98             +" WHERE <%= GetPKName() %> = @<%= GetPKName() %>"; 99 100 101             SqlParameter[] para = new SqlParameter[]102             {103                 new SqlParameter("@<%= GetPKName() %>", <%= GetModelParamName() %>.<%= GetPKName() %>)104                 <%105                 for(int i=0; i<TargetTable.NonPrimaryKeyColumns.Count; i++)106                 {107                     ColumnSchema column = TargetTable.NonPrimaryKeyColumns[i];108                 %>109                     ,new SqlParameter("@<%= column.Name %>", ToDBValue(<%= GetModelParamName() %>.<%= column.Name %>))110                 <%111                 }112                 %>113             };114 115             return SqlHelper.ExecuteNonQuery(sql, para);116         }        117         118         <%-- public static Book GetBookById(int id) --%>119         public <%= GetModelClassName() %> GetBy<%= GetPKPropertyName() %>(<%= GetPKPropertyType() %> <%= GetPKParamName() %>)120         {121             string sql = "SELECT * FROM <%= TargetTable.Name %> WHERE <%= GetPKPropertyName() %> = @<%= GetPKPropertyName() %>";122             using(SqlDataReader reader = SqlHelper.ExecuteDataReader(sql, new SqlParameter("@<%= GetPKPropertyName() %>", <%= GetPKParamName() %>)))123             {124
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区在线视频播放| 欧美色欧美亚洲高清在线视频| 中文字幕久久久av一区| 欧美极品少妇xxxxⅹ喷水| 欧美激情第一页xxx| 性欧美长视频免费观看不卡| 久久久国产一区二区三区| 国产午夜精品视频| 在线观看日韩av| 国产成人久久久| 精品亚洲一区二区三区在线观看| 国产欧美日韩综合精品| 欧美日韩国产中文字幕| 欧美性xxxx极品高清hd直播| 国产精品久久久久久av福利| 国外色69视频在线观看| 欧美激情在线观看视频| 在线丨暗呦小u女国产精品| 精品国内亚洲在观看18黄| 热久久99这里有精品| 欧美亚洲午夜视频在线观看| 成人黄色免费片| 日韩亚洲第一页| 亚洲第一网站免费视频| 1769国产精品| 欧美日韩在线免费观看| 中文字幕日韩在线观看| 亚洲国产毛片完整版| 欧美一级大胆视频| 不卡av在线网站| 精品亚洲国产成av人片传媒| 欧美精品在线观看91| 亚洲护士老师的毛茸茸最新章节| 日韩美女写真福利在线观看| 国产成人久久久精品一区| 亚洲精品99久久久久| 国产视频在线一区二区| 米奇精品一区二区三区在线观看| 欧美亚洲在线观看| 欧美一级大胆视频| 亚洲xxxx在线| 中文字幕无线精品亚洲乱码一区| 日韩视频精品在线| 91超碰中文字幕久久精品| 伊人青青综合网站| 69**夜色精品国产69乱| 亚洲精品99久久久久| 国产美女扒开尿口久久久| 欧美自拍视频在线| 欧美日韩中文字幕日韩欧美| 久久亚洲一区二区三区四区五区高| xxxxxxxxx欧美| 成人免费视频网| 欧美另类在线观看| 欧美在线亚洲在线| 欧美黄色片在线观看| 日韩美女在线观看一区| 欧洲一区二区视频| 91精品综合视频| 久久噜噜噜精品国产亚洲综合| 国产欧美日韩精品丝袜高跟鞋| 中文字幕欧美日韩精品| 国产欧美日韩中文字幕在线| 久久精品电影一区二区| 欧美黑人国产人伦爽爽爽| 日韩中文在线中文网在线观看| 久久久久久久久久婷婷| 国产精品一区二区久久国产| 久久久亚洲精品视频| 亚洲精品99久久久久中文字幕| 欧美高清一级大片| 92看片淫黄大片欧美看国产片| 中文字幕国产精品| 日韩精品有码在线观看| 日韩国产欧美精品一区二区三区| 亚洲欧美色图片| 91av网站在线播放| 亚洲日本aⅴ片在线观看香蕉| 久久影院资源站| 2020久久国产精品| 国产精品成人v| 国产精品www| 亚洲国产成人在线视频| 亚洲美女中文字幕| 欧美疯狂性受xxxxx另类| 国产精品96久久久久久又黄又硬| 亚洲欧美在线一区二区| 日韩国产精品一区| 精品久久久久久久久久久久久久| 青青久久aⅴ北条麻妃| 美女久久久久久久久久久| 日韩在线资源网| 欧美激情精品久久久久久黑人| 久久中文精品视频| 中文字幕在线精品| 88国产精品欧美一区二区三区| 一本一本久久a久久精品牛牛影视| 国语自产精品视频在线看一大j8| 国产精品久久久久久久一区探花| 色多多国产成人永久免费网站| 欧美成人合集magnet| 色爱精品视频一区| 欧美午夜精品久久久久久久| 国产精品亚洲第一区| 亚洲欧美三级在线| 欧美性猛交xxxxx水多| 亚洲精品456在线播放狼人| 亚洲香蕉av在线一区二区三区| 国产成人精品久久| 国产精品白嫩美女在线观看| 欧美高清无遮挡| 一区二区三区精品99久久| 国产乱人伦真实精品视频| 国模精品视频一区二区三区| 日韩中文字幕在线视频播放| 亚洲xxxx做受欧美| 亚洲欧美另类人妖| 日韩免费精品视频| 国产成人啪精品视频免费网| 亚洲精品日韩av| 亚洲免费视频一区二区| 久久精品中文字幕一区| 亚洲精品国精品久久99热一| 精品中文字幕乱| 91精品久久久久久久| 欧美大片va欧美在线播放| 青青在线视频一区二区三区| 欧美日韩在线免费观看| 亚洲国产精品久久久久秋霞蜜臀| 精品av在线播放| 成人网中文字幕| 国产一区视频在线| 国产69久久精品成人| 社区色欧美激情 | 中文字幕在线精品| 亚洲丝袜一区在线| 九色精品免费永久在线| 国产精品国产三级国产aⅴ浪潮| 午夜精品久久久久久久白皮肤| 久久视频免费在线播放| 色诱女教师一区二区三区| 91久久国产精品91久久性色| 欧美成人免费网| 国产98色在线| 亚洲精品久久久久中文字幕欢迎你| 日韩欧美在线视频观看| 久久精品在线播放| 羞羞色国产精品| 亚洲视频自拍偷拍| 国产专区精品视频| 欧美亚洲成人免费| 日韩精品中文字幕有码专区| 国产成人福利夜色影视| 日韩免费在线电影| 亚洲人成网站在线播| 亚洲精品91美女久久久久久久| 欧美xxxx18性欧美| 国产丝袜一区二区三区免费视频| 亚洲精品国产综合久久| 亚洲美女福利视频网站| 成人天堂噜噜噜| 欧美综合国产精品久久丁香| 免费91麻豆精品国产自产在线观看| 欧美wwwxxxx|