CodeSmith使用总结--读取一个表试试
我感觉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使用总结--读取一个表试试的更多相关文章
- inno setup读取注册表遇到的一个坑
一.背景 目前,公司针对PR开发的一个插件需要发布到64位系统上.该插件包括一个prm格式的文件和若干个DLL文件.其中,prm文件需要复制到PR公共插件目录下,DLL需要复制到Windows系统目录 ...
- SpringBoot集成mybatis,同时读取一个数据库中多个数据表
SpringBoot集成mybatis,同时读取一个数据库中多个数据表: application.properties: mybatis.config-location=classpath:mybat ...
- WinCE下读取注册表获得SD路径
WinCE下读取注册表获得SD路径 [要点]WinCE注册表中[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMemory\] 下键Folde ...
- Python+Selenium进行UI自动化测试项目中,常用的小技巧1:读取excel表,转化成字典(dict)输出
从今天开始我将会把在项目中遇到的问题,以及常用的一些技巧来分享出来,以此来促进自己的学习和提升自己:更加方便我以后的查阅. 现在要说的是:用Python来读取excel表的数据,返回字典(dict), ...
- C#读取注册表信息
注册表是视窗系统的一个核心的数据库,在这个数据库中存放中与系统相关的各种参数,这些参数直接控制中系统的启动.硬件的驱动程序安装信息以及在视窗系统上运行的各种应用程序的注册信息等.这就意味着,如果注册表 ...
- 开发日志系列:一个表单页面的呈现与提交(一)——JSON的操作
JSON操作 引子 最近在做一个表单页面,大概是这个样子的 这里打算用一个JSON存储所有的信息,我们可以理解为,所有东西都存在一个字符串里面.方便,快捷,易读,数据库操作也方便了.甚至,可以将很多不 ...
- SQL中锁表语句简单理解(针对于一个表)
锁定数据库的一个表 复制代码代码如下: SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别 复制代码代码如下: SELECT * FROM tab ...
- 用javascript技术读取注册表中软件安装位置并启动本地软件
1.首先读取注册表中本地软件安装的位置,如果未安装则无就跳转到下载页面. 2.启动软件,关闭页面. 3.如报错提示. <SCRIPT language=javascript> <! ...
- Jmeter读取excel表中用例数据实现接口压测
传统的接口测试,都是在接口中手动输入不同用例准备的多种场景参数数据,一遍一遍的输入来执行多个不同的用例,但是现在利用excel表格准备各种类型的数据,使用Jmeter中Jmeter CSV Data ...
随机推荐
- C#高级知识点概要(1) - 委托和事件
本文目录: 委托 委托的简单使用 用委托实现插件式编程 多播委托 静态方法和实例方法对于委托的区别 泛型委托 Func 和 Action 委托 委托的兼容 事件 事件的基本使用 事件的标准模式 委托 ...
- SignalR2.0开发实例之——负载均衡
SignalR 2.0作为一个新的而且强大的通信工具,发布博客之后得到了很多人的支持,谢谢...也有人对性能和架设等问题提出了各种质疑..真的很感谢.. 我特意下载了SignalR 2.0的源码硬着头 ...
- Android小试牛刀之遇到的问题
1.运行出错 创建项目时没有使用Empty Activity,创建. 2.创建第一个工程 选择Empty Activity才会自动创建Hello Word代码块 3.appcompat_v7的说明 在 ...
- Sql省市三级联动一张表
CREATE TABLE [dbo].[region]( [region_id] [int] NULL, [region_name] [varchar](50) COLLATE Chinese_PRC ...
- mysql中取系统当前时间
<select id="getFreightEfclInventoryList" parameterType="long" resultMap=" ...
- ios NSKeyedArchiver 保存对象与对象数组
废话不说,直接上代码 // // CommunityTool.h // SmartCommunity // // Created by chenhuan on 15/9/2. // Copyright ...
- JS通用表单验证函数,基于javascript正则表达式
表单的验证在实际的开发当中是件很烦琐又无趣的事情今天在做一个小项目的时候,需要JS验证,寻找到一个比较好的东西 地址如下: http://blog.csdn.net/goodfunman/archiv ...
- ARM 汇编器对C的扩展
__swi void ledtest(); //:声明 edtest 是个软中断. __asm 内嵌汇编 //:通常在C程序里面需要嵌入汇编代码,这是就可以用__asm关键字 ...
- 响应式Asp.net MVC企业网站源码
最近时间充裕,自己写了一个响应式MVC企业网站系统,用于回顾自己的MVC知识.网站源码后台和前台都采用响应式布局,可以适应不同的屏幕. 一.源码描述 响应式企业网站系统,前台和后台都采用了响应式布局, ...
- ROW_NUMBER()/RANK()/DENSE_RANK()/ntile() over()
ROW_NUMBER()/RANK()/DENSE_RANK()/ntile() over() 今天女票问我SqlServer的四种排序,当场写了几句Sql让她了解,现把相关Sql放上来. 首先, ...