SELECT
SalesOrderID, RevisionNumber, OrderDate, DueDate, ShipDate,
Status, OnlineOrderFlag, SalesOrderNumber, PurchaseOrderNumber,
AccountNumber, CustomerID, ContactID, SalesPersonID, TerritoryID,
BillToAddressID, ShipToAddressID, ShipMethodID, CreditCardID,
CreditCardApprovalCode, CurrencyRateID, SubTotal, TaxAmt, Freight,
TotalDue, Comment, rowguid, ModifiedDate
FROM Sales.SalesOrderHeader
WHERE (OrderDate > @OrderDate)
这个SQL查询是一个简单的SELECT查询,用了一个@OrderDate参数以筛选结果。这将使我们不用返回数据库中的所有记录。保持“Fill a DataTable”和“Return a DataTable”复选框的选中,点完成。把这个SELECT语句加完之后你的设计器现在应该像截图一样,在SalesOrderHeaderTableAdapter下面多了一个查询。
强类型数据集建立起来以后,我们就可以轻易地用几行代码在ASP.NET页面中把数据显示出来。在网站里新建一个ASP.NET页面并转到设计模式。拖一个GridView控件到上面,保留它的ID为GirdView1。然后到源代码页中,在文件的上方将AdventureWorksTableAdapters命名空间引入(在c#里面语法是using AdventureWorksTableAdapters;)。最后在Page_Load事件里增加下面的代码:
// Create the SalesOrderHeaderTableAdapter
SalesOrderHeaderTableAdapter salesAdapter =
new SalesOrderHeaderTableAdapter();
// Get orders that took place after July 1st, 2004
AdventureWorks.SalesOrderHeaderDataTable Orders =
salesAdapter.GetDataBy(new DateTime(2004, 7, 1));
// Bind the order results to the GridView
this.GridView1.DataSource = Orders;
this.GridView1.DataBind();
代码非常简单。我们创建一个SalesORderHeaderTableAdapter的实例以填充数据表。这里要注意的是,不同于普通的DataTable,我们声明了一个SalesORderHeaderDataTable类型的对象,我们调用GetDateBy()方法,传递一个DateTime对象来填充数据。这里也要注意,获取的命令也是强类型的,因此我们必须传递一个DateTime对象,而不是一个普通的对象。下面的截图即是上面代码示例的结果。
除了用代码把结果集绑定到GridView外,你也可以用一个ObjectDataSource,把它的TypeName属性设成AdventureWorksTableAdapters.SalesOrderHeaderTableAdapter,把它的SelectMethod设置成GetData或者GetDataBy。
除了连接数据库不需要写代码之外,使用强类型数据集的另一大优点是不存在编译器无法检查的潜伏在我们的代码中的列名字符串。我们也不需要进行任何类型转换。如果数据库架构发生改变,只要更新AdventureWorks.xsd文件,我们就会发现所有相关的改变在编译时自动完成了。
Other Techniques for Generating Strongly-Typed Data-Access Applications
除了使用强类型数据集之处,还有其它的方法可以在你的程序中实现强类型。你可以创建比DataSets更轻量级并且更符合你数据库的自定义类。也有一些第三方软件开发者开发了自动完成这一过程的工具。其中一个比较特别的也是我比较喜爱的是LLBLGen Pro,我曾经写过关于它的一本书:Rapid C# Windows Development: Visual Studio 2005, SQL Server 2005, and LLBLGen Pro。(你可以在我的网站上免费阅读此书1/3的内容。)另一个很欢迎的工具是CodeSmith。甚至微软也在开发一个叫DLINQ的小工具,但仍在测试之中,估计至少要等一下年才会推出。
如果你使用Visual Studio的强数据集方法,不容置疑,其中一个优点便是你不需要购买其它软件。所有的这些解决方案都有不同的特点和好处,但最主要的好处是可靠,错误少,花更少的时间调试。也更容易去检查数据库架构改变所造成的影响并作维护。希望你已经认识到强类型的好处。祝开发好运(约会也是)!
By Joseph Chancellor
Attachments
Download the code examined in this article
About the Author
Joseph Chancellor is a C# developer in Southern California who has had his fair share of relational trauma. He appreciates all kinds of feedback and suggestions. Visit his blog or read the first five chapters of his book on Visual Studio 2005, SQL Server 2005, and LLBLGen Pro.
原文地址:http://aspnet.4guysfromrolla.com/articles/020806-1.aspx
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




