5.3.6 实现产品详细信息服务的方法
首先,如先前所做的那样,在服务中添加一个新的DataSet。选择“文件”菜单下的添加新项目命令,打开添加新项目对话框,然后选择DataSet并使用向导建立一个新的查询。将DataSet命名为“ProductDetails”。
我们将要使用的这个查询包含三个表,所以在查询设计器中的添加表页面,按以下顺序添加这三个表。
(1)添加表ProductProductPhoto;
(2)添加表ProductPhoto;
(3)添加表Product。
添加完后,查询设计器将排列出三个表,并建立彼此之间的关系连接。
刚才什么查询都没有做,因为我们还没有选择查询的字段,但是表之间的关系连接已经做好了。添加查询的字段,选中以下字段(在字段前面的选择框中打钩):ProductPhoto表中的LargePhoto、ProductProductPhoto表中的ProductID、Product表中的Name和ListPrice。
单击执行查询按钮,可以得到几百个返回的数据(在默认的AdventureWorks数据库中为504个)。
对于产品的详细信息,我们只希望得到其中的一个,而且这一个是当用户点击产品列表框时才指定的,它应当作为一个参数被传递到服务方法中,然后传递给查询。要使用参数查询,需要对查询设计器的过滤列进行设置,在ProductID这行输入“@ID”。
现在再次执行这个查询,会出现查询参数对话框(如图5-25所示)。
|
| 图5-25 查询参数对话框 |
在Value列输入一个值,比如726,然后单击“OK”按钮,如果输入的ID号有相对应的产品,我们就可以看到结果。
查询的SQL语句像这样:
SELECT Production.Product.ProductID, |
现在有了查询语句,我们可以实现查询产品详细信息的服务了。因为查询返回了多个字段,我们需要一个数据类型保存它们。这就需要与数据契约相一致,以便客户端理解和分拆。
定义数据契约十分简单,将类的属性使用[DataContract()]属性声明,在契约中每个想公开的成员都使用[DataMember]属性。这里需要添加对System.Runtime.Serialization的引用。ProductRecord类的数据契约定义如下:
[DataContract()] |
如果先前添加的DataSet(XSD)命名为“ProductDetails”,则服务的调用就应该像这样:
public ProductRecord GetProductDetails(string strID) |
当然,需要在接口中添加契约的操作,接口应该变成这样:
[ServiceContract()] |
在编辑接口前,需要再次使用svcutil工具,将输出的文件添加到客户端;还需要修改由该工具产生的output.config文件形成新的App.config,如果先前修改了绑定的名称,还要再改一次。
现在就有了可以返回所选产品的详细描述、价格和图像的服务了,接下来是如何与我们的应用程序界面连接。
| 回书目 上一节 下一节 |
|
||||
| · 贝恩资本携手华为22亿.. · 隐私保护技术探讨 · VMware技术应用 · 珊瑚虫QQ作者侵权案开庭 · 打造安全服务器 · iSCSI应用与发展 · CISSP认证成长之路 · FTTx光纤接入 |
· Windows Server 2008专.. · 开源虚拟化技术Xen · WCF开发基础 · Linux——从菜鸟到高手 · 微软出价446亿美元收购.. · SQL Server 2008/2005.. · RAID——磁盘阵列基础 · 微软Forefront企业安全.. |
|||
|
||||
| · iSCSI应用与发展 · SQL Server 2008/2005.. · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · 中间件应用技术专题 · 深入了解PGP加密技术 · 病毒查杀专题 |
· 国际文档格式标准开战 · SSL VPN详细知识 · Linux防火墙 · 打造安全服务器 · Sniffer安全技术从入门.. · 木马原理与防范 · ADSL应用面面俱到 · 入侵防护系统(IPS)初探 |
|||
|
||||
| · iSCSI应用与发展 · 中间件应用技术专题 · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · 身份认证技术 · 病毒查杀专题 · 清除流氓软件——51CTO.. |
· SSL VPN详细知识 · Sniffer安全技术从入门.. · 了解统一威胁管理(UTM).. · 网络钓鱼 · ADSL应用面面俱到 · ADSL应用面面俱到 · 木马原理与防范 · 反垃圾邮件技术应用 |
|||