国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一款基于模板的代碼生成工具Template Studio

開發 后端
Template Studio是一款基于模板的優秀代碼生成工具,本文作為入門教程,給大家比較各自的優勢和不足。

  LLBL Gen作為一個優秀的ORM代碼生成工具,可以基于模板快速生成應用程序代碼。可能你也會推薦T4,Code Smith等模板生成器,但是先別急,先看看這篇文章作為入門教程,再來比較各自的優勢和不足。

  以第三方的模板Provide common SQL Functions for Microsoft SQL Server為例子,來講解模板生成的步驟。

  設計模板

  打開Template Studio,選擇TemplateBindings Viewer,點擊New按鈕,新增加一個模板TemplateBinding文件

這是方便LLBL Gen工作而進行的設定,有幾個關鍵項

  For database是模板支持的數據庫類型,只可以選擇一種數據庫類型;選擇Platform表示生成的代碼可以支持的.NET Framework版本,這將影響到可以生成的Visual Studio的sln和cs/vb.proj文件的版本。Target language選擇C#,以表明生成C#代碼;Logic language表示書寫模板用的語言是TDL語法。

  請在TemplateID-Filename bindings中綁定模板標識和對應的模板文件名稱。

  TemplateBinding是一個XML格式的配置文件,其內容如下

  1.   <?xml version="1.0"?>  
  2.   <templateBindings xmlns="http://sd/llblgen/pro/templateBindingsDefinition.xsd"name="WB.TemplateBindings.SqlServerSpecific.NET20" 
  3. description ="Template bindings for the templates which are specific for SqlServer based databases (7/2000/2005/CE). For .NET 2.0 based platforms" 
  4. databaseDriverID="2D18D138-1DD2-467E-86CC-4838250611AE" precedenceLevel="10">  description ="Template bindings for the templates which are specific for SqlServer based databases (7/2000/2005/CE). For .NET 2.0 based platforms" 
  5.   databaseDriverID="2D18D138-1DD2-467E-86CC-4838250611AE" precedenceLevel="10">  
  6.   <supportedPlatforms>  
  7.   <platform name=".NET 2.0"/>  
  8.   <platform name="CF.NET 2.0"/>  
  9.   </supportedPlatforms>  
  10.   <language name="C#">  
  11.   <!-- DB Specific template bindings -->  
  12.   <templateBinding emplateID="WB.SQLSystemFunctionsTemplate" filename="SqlServerSpecificNet2.xC#WB.SQLSystemFunctions.template" />  
  13.   </language>  
  14.   </templateBindings> 

  這是代碼批處理生成的思想。比如我有五個模板,現在給這五個模板添加一個配置文件,引用到這五個模板,然后

  只需要啟動配置文件,生成代碼時,會自動傳遞參數到這五個模板中,批次生成代碼。

  選中WB.SQLSystemFunctionsTemplate,用快捷鍵CTRL+E,編輯它對應的模板文件WB.SQLSystemFunctions.template。

LogicTDL語法和ASP.NET很相似,但是使用<[和]>表示模板中使用到的變量。

  在《LLBLGenPro2.6SDKDocumentation》文檔的Template Sets - Template Definition Language (TDL)節,提到了<[RootNamespace]>的含義,原文是Will be replaced by the specified Root namespace in the generator configuration screen,理解為取生成代碼時輸入的命名空間變量。

  啟動LLBL Gen,配置生成參數

  F7調出代碼生成界面,切換到Task queue to execute,Add Tasks添加一個新任務,選擇類型為SD.Tasks.Base.ConsumeTDLTemplate, 這個任務將會用于編譯第一節寫的模板,并生成C#代碼。

  修改參數 filenameFormat=SqlFunctionCalls.[extension],templateID=WB.SQLSystemFunctionsTemplate

  這其實是在配置代碼生成的preset文件,文件內容如下

  1.   <?xml version="1.0" encoding="utf-8"?>  
  2.   <preset name="SQL Functions" lastModifiedOn="2011-08-30T22:40:50.3165235+08:00" createdBy="Northwind" isSealed="false" xmlns="http://sd/llblgen/pro/presetElementDefinitions.xsd">  
  3.   <supportedPlatforms>  
  4.   <platform name=".NET 2.0" />  
  5.   </supportedPlatforms>  
  6.   <supportedTemplateGroups>  
  7.   <templateGroup name="Adapter" />  
  8.  </supportedTemplateGroups>  
  9.   <taskPresets>  
  10.   <taskPreset name="SD.Tasks.Base.ConsumeTDLTemplate">  
  11.   <parameters>  
  12.   <parameter name="destinationFolder" value="" />  
  13.   <parameter name="filenameFormat" value="SqlFunctionCalls.[extension]" />  
  14.   <parameter name="templateID" value="WB.SQLSystemFunctionsTemplate" />  
  15.   </parameters>  
  16.   </taskPreset>  
  17.   </taskPresets>  
  18.   </preset> 

  到此,已經配置完畢,點擊Start generator按鈕,生成代碼。

  模板文件的分析

  再來看一下模板的作用,這個模板的作用是把內置SQL Server系統中的date和string函數,轉化為C#代碼。

  如果要調用SQL Server中的YEAR函數,可能要寫這樣的方法

  1.   private int GetSQLServerYear()  
  2.   {  
  3.   ResultsetFields fields = new ResultsetFields(1);  
  4.   fields.DefineField(new EntityField("AFld"new DbFunctionCall("YEAR"new object[] { DateTime.Today })), 0);  
  5.   TypedListDAO dao = new TypedListDAO();  
  6.   return (int) dao.GetScalar(fields, nullnullnullnull);  
  7.   } 

  如果使用這個模板,下面的代碼已經為你生成好了,直接使用即可。

  1.   private int GetSQLServerYear()  
  2.   {  
  3.   ResultsetFields fields = new ResultsetFields(1);  
  4.   fields.DefineField(new EntityField("AFld", SqlFunctionFactory.Year(DateTime.Today), 0);  
  5.   TypedListDAO dao = new TypedListDAO();  
  6.   return (int) dao.GetScalar(fields, nullnullnullnull);  
  7.   } 

  也就是說白了,用于簡化對SQL Server函數的調用方法。

  但是,上面的代碼僅僅是對SQL Server內置的函數有作用,還沒有為用戶自定義的函數生成C#代碼,如果你有一個自定義的函數SomeFunctionToGetASetting,則需要添加一個partial的SqlFunctionFactory類,代碼如下

  1.   public partial class SqlFunctionFactory  
  2.   {  
  3.   public static IExpression SomeFunctionToGetASetting(int someParameter)  
  4.   {  
  5.   return new DbFunctionCall("dbo""SomeFunctionToGetASetting"new object[] { someParameter });  
  6.   }  
  7.   } 

  再增加一層代碼,供客戶端方便調用

  1.   public partial class SqlFunctionCalls  
  2.   {  
  3.   private SqlFunctionCalls()  
  4.   {  
  5.   }  
  6.   public static bool SomeFunctionToGetASetting(int someParameter)  
  7.   {  
  8.   return (bool)SqlFunctionFactory.GetScalar(SqlFunctionFactory.SomeFunctionToGetASetting(someParameter));  
  9.   }  
  10.   } 

  最終的調用代碼像下面這樣

  bool someSetting=SqlFunctionCalls.SomeFunctionToGetASetting(12);

  總結:LLBL Gen的模板生成器Template Studio由于其商業性的原因,普及程度不高,入門起來也沒有Code Smith/T4之類的快速,文檔少。官方認為,大部分的可能情況下,你不需要使用到自定義模板,LLBL Gen的安裝程序包已經附帶了完整的Adapter/SelfServicing模板。但如果要徹底的把握LLBL Gen這一ORM工具,了解和學習它的模板技術,是很有必要的。

原文鏈接:http://www.cnblogs.com/JamesLi2015/archive/2011/08/31/2160285.html

責任編輯:彭凡 來源: 博客園
相關推薦

2021-04-18 20:46:30

工具代碼編程

2022-02-16 09:01:33

編程工具Node-RED編輯器

2020-10-10 14:57:16

代碼開發工具

2022-05-26 17:40:51

Linux開源

2021-10-10 12:17:06

Weakpass在線字典生成器安全工具

2019-08-30 08:00:00

WebminWebLinux

2011-05-30 13:43:55

2023-09-21 11:48:49

CodeGeeXAI代碼

2022-02-25 14:57:33

harmonyOSjava心形動畫

2021-07-07 06:52:17

云圖word-cloud工具

2023-07-11 08:30:56

2021-01-27 07:24:38

TypeScript工具Java

2024-01-25 10:40:11

AutoProfil開源分析工具

2019-11-05 18:50:37

代碼開發工具

2011-01-04 09:20:00

2023-10-08 07:51:07

HInvoke項目函數

2021-01-27 13:16:39

ScreenLinux命令

2021-02-16 10:58:50

ScreenLinux命令

2021-07-09 10:14:05

IP工具命令

2013-10-15 09:26:12

點贊
收藏

51CTO技術棧公眾號

国产精品一二三产区| www在线视频| 国产精品亚洲一区二区在线观看| 国产欧美精品在线观看| 国产va免费精品高清在线| 97人人在线视频| 久久亚洲一级片| 日韩精品一线二线三线| 欧美国产不卡| 精品国产一区二区在线观看| 人妻少妇精品无码专区二区| 日韩国产精品91| 成人高清视频观看www| 24小时成人在线视频| 色综合久久久久久久久久久| 国产精品入口芒果| 成人动漫中文字幕| 国产99在线免费| 夜夜躁狠狠躁日日躁2021日韩| 日韩亚洲欧美中文高清在线| 成人嫩草影院免费观看| 最新国产成人在线观看| 亚洲欧美日韩国产yyy| 欧美巨大另类极品videosbest | 传媒在线观看| 国产日产亚洲精品系列| 亚洲国产精品久久久久久女王| 另类激情视频| 亚洲人成在线免费观看| 免费电影网站在线视频观看福利| 日韩欧美自拍偷拍| 日本动漫同人动漫在线观看| 日韩电影免费观看中文字幕| 色www永久免费视频首页在线 | 91精品婷婷国产综合久久竹菊| 日本不卡视频一区二区| 欧美性xxxxx| www99热| 在线欧美小视频| 人操人视频在线观看| 一区二区三区av电影 | 欧美女优在线视频| 日本免费久久高清视频| 国产精品手机在线播放| 91嫩草视频在线观看| 那种视频在线观看| 日韩av在线播放网址| 国产成人精品电影| 久久综合中文| 免费看国产一级片| 精品女厕一区二区三区| 国产经典一区| 国产精品一区二区欧美| 国产一区高清在线| 一级特黄录像免费播放全99| 国产欧美日韩三级| av福利精品| 国产精品老女人视频| 免费观看30秒视频久久| 中文字幕国产在线| 欧美日韩性生活| 色播在线观看| 欧美小视频在线| 欧美日韩亚洲国产| 国产精品视频一区二区三区经| 蜜臀精品久久久久久蜜臀| 亚洲人成小说| 欧美日韩不卡视频| 久久精品xxxxx| 国产欧美一区二区三区不卡高清| av资源网一区| 超碰国产在线观看| **日韩最新| 欧美一激情一区二区三区| 日日av拍夜夜添久久免费| 日韩网站免费观看| 日本午夜精品视频在线观看| 国产一级在线| 97操在线视频| 亚洲一区二区三区四区中文字幕| 一呦二呦三呦精品国产| 色涩成人影视在线播放| 亚洲一区二区三区视频在线播放| 24小时成人在线视频| 一二三四中文字幕| 亚洲午夜激情免费视频| 日韩高清中文字幕一区| 青草久久伊人| 国产富婆一区二区三区 | 一区二区三区四区免费观看| 91极品美女在线| 亚洲尤物影院| 午夜av在线免费观看 | 日韩午夜黄色| 最全影音av资源中文字幕在线| 日韩综合一区二区三区| 男同互操gay射视频在线看| 一区二区精品免费视频| 91精品入口蜜桃| 欧美日韩国产成人高清视频| 欧美午夜www高清视频| 高清欧美性猛交xxxx黑人猛| 少妇性饥渴无码a区免费| 麻豆一区二区在线观看| 懂色av中文一区二区三区| 亚洲码欧美码一区二区三区| 满满都是荷尔蒙韩剧在线观看| 亚洲人成伊人成综合网久久久| 五月香视频在线观看| 在线免费观看一区二区三区| 日本高清在线观看wwwww色| 欧美猛男性生活免费| 韩曰欧美视频免费观看| 久久综合久久综合久久| 国内不卡的二区三区中文字幕| 男人捅女人免费视频| 日本最新一区二区三区视频观看| 中文字幕国产精品| 亚洲综合精品| 国产在线无码精品| 久久久国产视频91| 欧美性猛交xxxxxxxx| 中文字幕欧美国产| 香蕉视频成人在线观看| 亚洲传媒在线| 亚洲欧洲一二区| 日韩毛片久久久| 韩国中文字幕av| 国产精品影院在线观看| 亚洲欧美国产一本综合首页| 色94色欧美sute亚洲线路二 | 欧美精品一区二区三区蜜桃视频| 一个色在线综合| 欧美久色视频| 色综合综合网| 欧美电影网站| 午夜欧美巨大性欧美巨大| av网址在线看| 成人黄网18免费观看的网站| 成人女人免费毛片| 欧美成人精品一区二区| 在线精品视频小说1| 一本一道久久a久久精品| 欧美色xxxx| 国产成人a级片| 色香阁99久久精品久久久| 4438x亚洲最大成人网| 国产精品超碰97尤物18| 亚洲欧美春色| 国产成人精品免费看| 久久亚洲捆绑美女| 国产日韩欧美精品一区| 国产99精品视频| 国产精品自拍网站| 老司机精品视频网站| 日韩精品福利网| 26uuu久久天堂性欧美| 不卡av在线免费观看| 中文字幕日韩一区| 亚洲一区二区三区四区在线免费观看 | 国产一在线精品一区在线观看| 久久久久久久久99精品大| 欧美午夜不卡| 蜜乳av另类精品一区二区| 激情丁香综合五月| 成人爱爱电影网址| 亚洲国产视频一区| 亚洲国产精品成人av| 伊人激情综合网| 欧美大秀在线观看| 蜜桃导航-精品导航| 精品国产免费人成电影在线观...| 国产欧美婷婷中文| 免费观看国产视频在线| 亚洲视频在线一区| 老牛影视一区二区三区| 国产精品18久久久久久久久| 久久久久久99久久久精品网站| 国产成人午夜高潮毛片| 亚洲va国产va欧美va观看| 尤物tv国产一区| 久久精品中文字幕一区二区三区 | 婷婷成人综合| 国产农村妇女毛片精品久久莱园子 | 亚洲电影影音先锋| 欧美色女视频| 99re6这里只有精品| 99久久综合国产精品| 无码av免费一区二区三区试看 | 色香蕉久久蜜桃| 深夜福利国产精品| 欧美精品欧美精品| 中文视频在线| 99热这里只有精品首页 | 成人涩涩网站| 99精品1区2区| 久久精品99无色码中文字幕 | 国产日韩在线| 久草在线资源福利站| 香蕉av777xxx色综合一区|