最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)

我们回顾一下上一节的内容:我们已经能够创建一些简单的静态或者动态模板了,下面我们就来学习建立一个数据模板

1.编写一个数据模板


       使用模板生成代码的一个很重要的用途就是数据库模板。通过使用CodeSmith 的SchemaExplorer 组件就能达到这个目的,该数据组件支持SQL以及ADO数据服务。这一节,你将了解到怎么利用SchemaExplorer所提供的信息来生成复杂的T-SQL代码。

2.SQL Server 2005中的HTTP Endpoints


        SQL Server 2005众多新特性中很引人注目的一个就是能通过执行T-SQL代码生成HTTP endpoints。HTTP endpoints有很多用途,但我们最关心的是HTTP endpoints让返回SQL数据到WEB服务更容易了。实际上,如果你在Windows Server 2003上运行SQL Server 2005,你甚至不需要IIS为返回SQL 数据而创建一个web服务。只需要在现有的存储过程上加上CREATE ENDPOINT 就能实现以上目的了。

       虽然包含CREATE ENDPOINT的存储过程可以写得很复杂,但是如果你觉得这个存储过程要多次使用的话,那么完全可以使用代码模板。那么还是用我们之前用过的方法,先来看看你要生成的SQL语句是个什么样子。

3.我们的目标SQL代码


我们将根据一张实际的表创建一个HTTP endpoint ,因为HTTP endpoint 只能从存储过程或者函数返回信息,这就意味着我们必须建立两个SQL语句:一个创建一个存储过程,一个创建endpoint本身;在下面的例子中,我们使用示例数据库:AdventureWorks中的Person.AddressType 表:

CREATE PROC dbo.PersonAddressTypeProc
AS
     SELECT 
        
AddressTypeID, 
         Name
        
rowguid
        
ModifiedDate
     FROM
        
Person.AddressType
GO
>CREATE ENDPOINT Get
AddressType
     STATE = STARTED
AS HTTP
(
     PATH = '/
AddressType',
     AUTHENTICATION = (
INTEGRATED),
     PORTS = (
CLEAR),
     SITE = 'localhost'
)
FOR SOAP
(
     WEBMETHOD '
AddressTypeList'
         (NAME='
AdventureWorks.dbo.PersonAddressTypeProc'),
     BATCHES = DISABLED,
     WSDL = DEFAULT,
     DATABASE = '
AdventureWorks',
     NAMESPACE = 'http://A
dventureWorks/AddressType'
)
GO



我们已经高亮标注了两种不同的信息,红色部分的SQL代码表示用户可以从列表中选择的内容。绿色的部分代表CodeSmith 可以根据用户指定的SQL数据库中的表中获取的内容。剩下的就是静态不变的内容。

接下来我们就利用CodeSmith Studio快速生成一个数据模板。

4.利用CodeSmith Studio创建一个模板


首先启动CodeSmith Studio,然后选择File > New > VB模板,这样将会生成一些样板代码,我们直接修改这些代码如下:

<% @ CodeTemplate Language = "VB" TargetLanguage = "T - SQL" Description = " Create  an HTTP Endpoint."  %>

TargetLanguage 属性表示你将要生成的代码是 T-SQL语言,这个属性和代码中的静态内容是息息相关的。接下来用我们将要生成的SQL代码替代模板中剩下的样板代码。

<% @ CodeTemplate Language = "VB" TargetLanguage = "T - SQL" Description = " Create  an HTTP Endpoint."  %>
CREATE   PROC  dbo.PersonAddressTypeProc
AS
    
SELECT  
        AddressTypeID, 
        Name, 
        rowguid, 
        ModifiedDate
    
FROM
    Person.AddressType
GO
CREATE  ENDPOINT GetAddressType
    STATE 
=  STARTED
AS  HTTP
(
    PATH 
=   ' /AddressType ' ,
    AUTHENTICATION 
=  (INTEGRATED),
    PORTS 
=  (CLEAR),
    SITE 
=   ' localhost '
)
FOR  SOAP
(
    WEBMETHOD 
' AddressTypeList '
        (NAME
= ' AdventureWorks.dbo.PersonAddressTypeProc ' ),
    BATCHES 
=  DISABLED,
    WSDL 
=   DEFAULT ,
    
DATABASE   =   ' AdventureWorks ' ,
    NAMESPACE 
=   ' http://AdventureWorks/AddressType '
)
GO

 当然,你需要的不是这样一个静态模板,在下一节我们将加入动态内容 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值