在ASP.NET 2.0中操作数据之六十七:在TableAdapters中(3)

  最后向导要我们为TableAdapter的方法命名,我们命名为Fill 和 GetEmployees.同时选中“Create methods to send updates directly to the database (GenerateDBDirectMethods)”选项.

/uploads/allimg/200612/1HJC645_0.png


图7:将TableAdapter的方法命名为Fill和GetEmployees

  完成设置后,花点时间检查数据库里的存储过程,你可以看到4个新的存储过程:Employees_Select, Employees_Insert, Employees_Update,Employees_Delete.接下来,考察我们刚刚创建创建的EmployeesDataTable 和 EmployeesTableAdapter.该DataTable包含了主查询返回的每列。选中TableAdapter并进入属性窗口,你将看到InsertCommand, UpdateCommand,DeleteCommand属性调用相应的存储过程.

/uploads/allimg/200612/1HJ23102_0.png


图8:TableAdapter包含Insert, Update,Delete属性

  当自动的生成insert, update,delete存储过程,并恰当的设置好InsertCommand, UpdateCommand,DeleteCommand属性后我们就可以对SelectCommand的存储过程进行用户定制,以返回雇员的经理这些信息.具体来说,我们需要更新Employees_Select存储过程,使用JOIN返回经理的FirstName 和 LastName值。完成后,我们要更新DataTable以使其包含这些额外的列.我们将在第2和3步实现.

第2步:用JOIN定制存储过程

  在服务器资源管理器里,展开Northwind数据库的存储过程文件夹,打开存储过程Employees_Select。如果你没有找到该存储过程,右击存储过程文件夹选“刷新”.更新该存储过程,以使其用一个LEFT JOIN来返回经理的first 和last name:

SELECT Employees.EmployeeID, Employees.LastName, Employees.FirstName, Employees.Title, Employees.HireDate, Employees.ReportsTo, Employees.Country, Manager.FirstName as ManagerFirstName, Manager.LastName as ManagerLastName FROM Employees LEFT JOIN Employees AS Manager ON Employees.ReportsTo = Manager.EmployeeID

  完成对SELECT statement的更新后,在“文件”菜单里选“Save Employees_Select”来保存所做的修改. 当然,你也可以点击工具栏的保存图标或按下Ctrl+S键.保存后,在服务器资源管理器里右击存储过程Employees_Select,选“执行”。这将执行存储过程并在输出窗口里显示结果,如图9所示。

/uploads/allimg/200612/1HJ32442_0.png


图9:存储过程的结果显示在输出窗口里

第3步:更新DataTable的列

  此时,Employees_Select存储过程返回ManagerFirstName 和ManagerLastName值。但在EmployeesDataTable里并不包含这2列.可以通过下面的方法来进行添加:

.手动——在设计器里右键单击DataTable,在“Add”菜单里选“Column”.然后对列命名并设置其属性.

.自动——TableAdapter设置向导会更新DataTable的列以映射SelectCommand存储过程返回的列(field).如果使用的是ad-hoc SQL statements的话,向导会移除InsertCommand, UpdateCommand,以及 DeleteCommand属性,因为SelectCommand现在包含了一个JOIN. 但若使用存储过程的话,这些command属性将依然存在.

  我们在前面的第35章《使用Repeater和DataList单页面实现主/从报表》以及第52章《使用FileUpload上传文件》里考察过手动添加列的情况,我们在以后的文章里也会看到该过程的更多的细节,不过在本文,我们通过使用TableAdapter设置向导来自动添加.

  右键单击EmployeesTableAdapter,并选择“配置”。这将开启TableAdapter设置向导,它列出了用于select, insert, updat,delet的存储过程,同时还有其返回的值和参数(如果有的话).如图10所示,我们可以看到Employees_Select存储过程现在返回了ManagerFirstName 和 ManagerLastName列

/uploads/allimg/200612/1HJ3AC_0.png


图10:向导显示了Employees_Select存储过程更新后的列

  点Finish完成设置,回到DataSet设计器里,该EmployeesDataTable现在包含了2个新添的列ManagerFirstName 和 ManagerLastName.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjwyws.html