我感觉CodeSmith对于我的最大用途是不用我手动创建每个表的Model、BLL和DAL了,那些繁琐的工作真的让我很无语。

CodeSmith要读取数据库中的表就要先连接数据库。

新建一个数据库连接,会让你输入数据库名、数据库类型和连接字符串。我经常用到的两个连接设置如下:

数据库

连接类型

连接字符串

MySql

MySqlShemaProvider

server=localhost;database=;User Id=root;Password=123;

SqlServer

SqlShemaProvider

server=.\SQLExpress;database=;uid=sa;pwd=sa;

测试连通了以后就可以开始我们的模板路程了。

<%@ Assembly Name="SchemaExplorer" %>

<%@ Import Namespace="SchemaExplorer" %>

引用了CodeSmith自带的一个数据库连接组件,然后引用其命名空间。接下来就要定义一个属性来获取表了

<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="表" Description="要操作的表" %>

他会在属性栏里边创建一个数据库选择按钮,用它来选择我们要操作的数据库。

Type 在这里的类型是SchemaExplorer.TableSchema 就是读取表结构,与之类似的

SchemaExplorer.DateSchema 读数据库、SchemaExplorer.ViewSchema 读视图等等……

用它来选择完要操作的表以后我们就要读取表结构了,跟读取字段属性一样,都是用<%=  %>标记来取值,中间跟着字段名和他的属性,Like:<%= SourceTable.Name %>去数据库名。

就想定义的模板语言一样,可以使用C#中的foreach循环来读取表的字段。使用方法如下

<%foreach(ColumnSchema col in SourceTable.Columns) {%>

<%= col.Name %>--<%= col.DataType %>

<%} %>

这样就可以循环表中所有的字段了,当然你也可以加一些条件,比如不读取主键或只读主键之类。

最终模板:

<%--

Name: 测试模板2

Author: GodFinal

Description:

--%>

<%@ Template Language="C#" TargetLanguage="SQL" Description="连接SQL数据库,并读取表结构" Debug="True"%>

<%--调用CodeSmith自带的组件SchemaExplorer,这是一个访问数据库的组件--%>

<%@ Assembly Name="SchemaExplorer" %>

<%@ Import Namespace="SchemaExplorer" %>

<%--定义一个属性,来获得要操作的表。TableSchema取得是表,ViewSchema是视图。--%>

<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="表" Description="要操作的表" %>

<%--循环读取表的字段结构--%>

<%foreach(ColumnSchema col in SourceTable.Columns) {%>

<%= col.Name %>--<%= col.DataType %>

<%} %>

测试运行结果:

id--Int32

CPlace--String

Saler--String

Company--String

Department--String

Account--String

telephone--String

email--String

Address--String

Zipcode--String

Level--String

CodeSmith使用总结--读取一个表试试的更多相关文章

  1. inno setup读取注册表遇到的一个坑

    一.背景 目前,公司针对PR开发的一个插件需要发布到64位系统上.该插件包括一个prm格式的文件和若干个DLL文件.其中,prm文件需要复制到PR公共插件目录下,DLL需要复制到Windows系统目录 ...

  2. SpringBoot集成mybatis,同时读取一个数据库中多个数据表

    SpringBoot集成mybatis,同时读取一个数据库中多个数据表: application.properties: mybatis.config-location=classpath:mybat ...

  3. WinCE下读取注册表获得SD路径

    WinCE下读取注册表获得SD路径 [要点]WinCE注册表中[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMemory\] 下键Folde ...

  4. Python+Selenium进行UI自动化测试项目中,常用的小技巧1:读取excel表,转化成字典(dict)输出

    从今天开始我将会把在项目中遇到的问题,以及常用的一些技巧来分享出来,以此来促进自己的学习和提升自己:更加方便我以后的查阅. 现在要说的是:用Python来读取excel表的数据,返回字典(dict), ...

  5. C#读取注册表信息

    注册表是视窗系统的一个核心的数据库,在这个数据库中存放中与系统相关的各种参数,这些参数直接控制中系统的启动.硬件的驱动程序安装信息以及在视窗系统上运行的各种应用程序的注册信息等.这就意味着,如果注册表 ...

  6. 开发日志系列:一个表单页面的呈现与提交(一)——JSON的操作

    JSON操作 引子 最近在做一个表单页面,大概是这个样子的 这里打算用一个JSON存储所有的信息,我们可以理解为,所有东西都存在一个字符串里面.方便,快捷,易读,数据库操作也方便了.甚至,可以将很多不 ...

  7. SQL中锁表语句简单理解(针对于一个表)

    锁定数据库的一个表 复制代码代码如下: SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别 复制代码代码如下: SELECT * FROM tab ...

  8. 用javascript技术读取注册表中软件安装位置并启动本地软件

    1.首先读取注册表中本地软件安装的位置,如果未安装则无就跳转到下载页面. 2.启动软件,关闭页面. 3.如报错提示. <SCRIPT language=javascript>  <! ...

  9. Jmeter读取excel表中用例数据实现接口压测

    传统的接口测试,都是在接口中手动输入不同用例准备的多种场景参数数据,一遍一遍的输入来执行多个不同的用例,但是现在利用excel表格准备各种类型的数据,使用Jmeter中Jmeter CSV Data ...

随机推荐

  1. FreeMarker辅助

    /** * FreeMarker 辅助类 * @author Rubekid * */ public class FreeMarkerHelper { /** * 模板文件存放目录 */ privat ...

  2. <div> 如何布局两个标签的布局

    想做一个div的曾背景颜色是黄绿色,内部有<a>标签. 代码如下: <div align="center" style=" width: 900px;h ...

  3. Ajax (jquery)实现智能提示搜索框(in Django)

    搜索框输入搜索名字,从数据库中筛选名字, 如果有包含输入的字母的名字则以json格式返回并且显示在搜索框下:          html文件: <!DOCTYPE html> <ht ...

  4. Jquery 使用JSOPN实例

    1.说明 dataType:返回的数据类型 jsonp:传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) jsonpCallback:自定义的jsonp ...

  5. Android-为何以及如何保存Fragment实例

    在安卓开发中,由于旋转设备会造成配置改变进而导致Activity实例被摧毁(当然也包括Activity托管的Fragment).Activity或Fragment实例被摧毁自然也就让Model被摧毁, ...

  6. VMware 虚拟机(linux)增加根目录磁盘空间 转自

    转自 http://wenku.baidu.com/link?url=WZDgESO0oXqYfhPYOWFalZsMglS0HKtLw7t6ICRs_sJ_sfPc85RpxsqKMwqSniis0 ...

  7. 复习css3的部分属性

    利用css3实现一个半月形的西瓜,利用queue实现吃西瓜的动画.练习例子 css3: 1.圆角 border-radius:100%; border-top-left-radius:5px; 2.变 ...

  8. Js判断来访问者的系统

    var ua = navigator.userAgent; ) { alert('您使用的是win32 XP系统!'); } else { alert('您使用的是Win7系统!'); }

  9. Java添加自定义注解

    今天在整合MyBatis过程中,我使用扫描的方式去扫描DAO目录下的Java文件,但是在Service层使用Autowired的时候报错,但是工程能正常运行,此处有Bug! 解决方案: 1.创建 an ...

  10. iOS触摸事件深度解析-备用

    概述 本文主要解析从我们的手指触摸苹果设备到最终响应事件的整个处理机制.本质上讲,整个过程可以分为两个步骤: 步骤1:找目标.在iOS视图层次结构中找到触摸事件的最终接受者: 步骤2:事件响应.基于i ...