Chinaunix首页 | 论坛 | 博客
  • 博客访问: 735188
  • 博文数量: 769
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4985
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:37
文章分类

全部博文(769)

文章存档

2011年(1)

2008年(768)

我的朋友

分类:

2008-10-15 16:39:23

  一、 扩展表格适配器

  当你设计业务层和数据存取层时,你基本上都是把实体和关系分别映射到数据库表格及表格列中。典型地,我们期望每个实体的行为是:通过一系列语句来执行数据库操作。那么,你该如何描述一个实体的行为呢?数据存取设计模式在这方面提供了一定的指导作用。其实,一个表格适配器的CommandCollection属性是一个内部数据结构,它提供的语句用于硬编码在一个表格上期望的行为。

  因此,如果你想在Customers表格上添加一种行为,那么,你需要把一个新的T-SQL语句添加到CommandCollection属性,然后经由CustomersTableAdapter类中的一个新的方法使其成为public型属性。Visual Studio 2005提供一个简单的向导来完成所有这些工作。只要简单地选择在表格适配器设计器中定义的一个任务,你就可以触发这个向导,如图4所示。


图4.选择表格适配器设计器定义的一个任务触发特定的向导。

  当你在Visual Studio 2005中选择一个表格适配器组件时,它将显示一个灵敏标签。点击它之后,Visual Studio就会显示一个菜单。如果你选择编辑查询,那么,你会得到当前数据集组件中所有表格的一个图形表示(见图5)。


图5.Visual Studio 2005数据设计器提供的表格关系和表格适配器。

  要编辑一个现有查询,你只要选择表格适配器任务列表中的任务并编辑Properties窗口中的属性即可。为了添加一个新任务,你可以选择“Add Query”,然后遵循随后向导的提示即可。该向导最终引导你定义一个新的命令,无论它是一个查询或是一个更新语句。完成之后,你会看到一个额外的入口出现在任务列表内;另外,对基本代码也进行了一定程度的修改。

  现在,假定你定义了一个新的查询语句—用于根据不同国家加载相应的顾客信息,那么,最后的语句看起来类似如下:

SELECT ... FROM customers WHERE country=@country

  向导会要求你为使用该语句检索数据(GetDataXXX)并填充传递的数据表格(FillXXX)的两个方法进行命名。当然,你可以选择仅生成其中一个方法。

  让我们如图6所示来命名方法GetDataByCountry和FillByCountry。


图6.添加到表格适配器的新任务。

  这两个新的方法都要使用从命令集合中提取的命令来建立适配器的SelectCommand语句并执行它。列表4展示了该FillByCountry方法的源代码。

  列表4.FillByCountry方法的源代码。

The new FillByCountry method
Public Overridable Overloads Function FillByCountry( _
ByVal dataTable As CustomersDataTable, _
ByVal country As String) As Integer
 Me.Adapter.SelectCommand = Me.CommandCollection(1)
 If (country Is Nothing) Then
  Me.Adapter.SelectCommand.Parameters(0).Value = System.DBNull.Value
 Else
  Me.Adapter.SelectCommand.Parameters(0).Value = CType(country, String)
 End If
 If (Me.ClearBeforeFill = True) Then
  dataTable.Clear()
 End If
 Dim returnValue As Integer = Me.Adapter.Fill(dataTable)
 Return returnValue
End Function

 

[1]   

【责编:Peng】

--------------------next---------------------

阅读(368) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~