一、 扩展表格适配器 当你设计业务层和数据存取层时,你基本上都是把实体和关系分别映射到数据库表格及表格列中。典型地,我们期望每个实体的行为是:通过一系列语句来执行数据库操作。那么,你该如何描述一个实体的行为呢?数据存取设计模式在这方面提供了一定的指导作用。其实,一个表格适配器的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---------------------
阅读(378) | 评论(0) | 转发(0) |