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

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 表:

【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)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

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

【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)
我们已经高亮标注了两种不同的信息,红色部分的SQL代码表示用户可以从列表中选择的内容。绿色的部分代表CodeSmith 可以根据用户指定的SQL数据库中的表中获取的内容。剩下的就是静态不变的内容。

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

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


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

【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)<%@ CodeTemplate Language="VB" TargetLanguage="T-SQL" Description="Create an HTTP Endpoint." %>
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)
TargetLanguage 属性表示你将要生成的代码是 T-SQL语言,这个属性和代码中的静态内容是息息相关的。接下来用我们将要生成的SQL代码替代模板中剩下的样板代码。

【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)<%@ CodeTemplate Language="VB" TargetLanguage="T-SQL" Description="Create an HTTP Endpoint." %>
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)
CREATE PROC dbo.PersonAddressTypeProc
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)
AS
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)    
SELECT 
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)        AddressTypeID, 
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)        Name, 
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)        rowguid, 
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)        ModifiedDate
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)    
FROM
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)    Person.AddressType
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)
GO
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)
CREATE ENDPOINT GetAddressType
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)    STATE 
= STARTED
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)
AS HTTP
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)(
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)    PATH 
= '/AddressType',
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)    AUTHENTICATION 
= (INTEGRATED),
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)    PORTS 
= (CLEAR),
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)    SITE 
= 'localhost'
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上))
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)
FOR SOAP
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)(
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)    WEBMETHOD 
'AddressTypeList'
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)        (NAME
='AdventureWorks.dbo.PersonAddressTypeProc'),
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)    BATCHES 
= DISABLED,
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)    WSDL 
= DEFAULT,
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)    
DATABASE = 'AdventureWorks',
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)    NAMESPACE 
= 'http://AdventureWorks/AddressType'
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上))
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)
GO
【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上)

【翻译】最新版CodeSmith3.2(.net2.0)教程之五:SQL2005数据模板(上) 当然,你需要的不是这样一个静态模板,在下一节我们将加入动态内容 

相关文章:

  • 2022-03-03
  • 2021-04-09
  • 2021-05-23
  • 2021-09-17
  • 2022-12-23
  • 2021-12-30
  • 2021-09-28
猜你喜欢
  • 2022-02-03
  • 2021-11-03
  • 2021-09-13
  • 2021-08-29
  • 2021-11-20
  • 2021-08-12
相关资源
相似解决方案