您的位置:首页 > 数据库

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

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

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





我们已经高亮标注了两种不同的信息,红色部分的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




当然,你需要的不是这样一个静态模板,在下一节我们将加入动态内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐