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:
ProductsDataTable多了2个新字段
花点时间把
GetProductsByCategoryID(categoryID)方法中的
SELECT
子句也更新一下。
如果你使用
JOIN句法更新
GetProducts()中的
SELECT语句的话
,DataSet设计器不能使用DB直接模式自动生成插入,更新,以及删除数据库记录的方法。你必须手工生成这
些方法,就象本教程早先时候我们对
InsertProduct方法的做法一样。此外,你必须手工提供
InsertCommand,
UpdateCommand和
DeleteCommand属性值,假如你
想使用批更新模式的话。
相关文章推荐
- asp.net中数据链路层的创建(4)
- asp.net中数据链路层的创建(6)
- asp.net中数据链路层的创建(11)
- asp.net中数据链路层的创建(7)
- asp.net中数据链路层的创建(12)
- asp.net中数据链路层的创建(5)
- asp.net中数据链路层的创建(13)
- asp.net中数据链路层的创建(8)
- asp.net中数据链路层的创建(1)
- asp.net中数据链路层的创建(9)
- 为ASP.NET MVC应用创建Entity Framework数据模型(1/10)
- asp.net中数据链路层的创建(2)
- asp.net中数据链路层的创建(3)
- VS2013从头开始创建Web Form--ASP.NET数据源和数据绑定控件
- Scott Mitchell 的ASP.NET 2.0数据教程之一: 创建一个数据访问层
- 总结Asp.net中Page加载PostData的具体过程 进而解决"获取动态创建的控件的PostData数据"问题
- 创建一个可以绑定数据的 ASP.NET Web 部件控件
- 我要学ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格
- 一步一步学习ASP.NET MVC 1.0创建NerdDinner 范例程序(1-10)-- 推荐!
- 在ASP.NET 2.0中操作数据之七十四:用Managed Code创建存储过程和用户自定义函数(下部分)