您的位置:首页 > 编程语言 > ASP

asp.net中数据链路层的创建(10)

2009-03-26 23:29 176 查看

第五步:完成数据访问层

注意,
ProductsTableAdapters
类从
Products
表中返回的
CategoryID
SupplierID
的值,但并不包括
Categories

CategoryName
字段和
Suppliers
表的
CompanyName
字段,尽管当
我们显示产品信息时,这些很可能是我们想要显示的字段。我们可以扩充TableAdapter的起始方
GetProducts()
来包含
CategoryName
CompanyName
字段的值,
这方法进而会更新强类型的DataTable来包括这些新的字段。

但这会造成一个问题,因为TableAdapter的插入,更新,删除数据的方法是基于这个起始方法的,幸运的是,
自动生成的插入,更新,删除方法并不会受
SELECT
子句中的子查询的影响。如果我们注意把
Categories
Suppliers
的查询添加成子查询,而不是用
JOIN

句的话,我们可以避免重做这些修改数据的方法。在
ProductsTableAdapter
中的
GetProducts()
方法上按右鼠标,选择“配置”,然后,把
SELECT
子句改成:

SQL
1
2
3
4
5
6
7

SELECT     ProductID, ProductName, SupplierID, CategoryID,
QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued,
(SELECT CategoryName FROM Categories
WHERE Categories.CategoryID = Products.CategoryID) as CategoryName,
(SELECT CompanyName FROM Suppliers
WHERE Suppliers.SupplierID = Products.SupplierID) as SupplierName
FROM         Products





图29:
更新
GetProducts()
方法的
SELECT
语句


在更新
GetProducts()
方法使用这个新查询语句之后,对应的DataTable将包含2个新字段,
CategoryName
SupplierName




图30:
Products
DataTable多了2个新字段


花点时间把
GetProductsByCategoryID(categoryID)
方法中的
SELECT

子句也更新一下。

如果你使用
JOIN
句法更新
GetProducts()
中的
SELECT
语句的话
,DataSet设计器不能使用DB直接模式自动生成插入,更新,以及删除数据库记录的方法。你必须手工生成这
些方法,就象本教程早先时候我们对
InsertProduct
方法的做法一样。此外,你必须手工提供
InsertCommand
UpdateCommand
DeleteCommand
属性值,假如你
想使用批更新模式的话。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: