您的位置:首页 > 其它

在VS2005中使用强类型数据 - 开发项目的好方法

2007-12-17 15:50 721 查看
作为开发人员,当我们决定采取哪一种构架是,主要有两个方面的要求:
1.功能稳定,性能高
2.开发效率高
我现在从事程序开发快有三年了,而这三年,我的程序开发经历可以分为三个阶段。最开始的半年的时间属于第一个阶段,在构架上处于一种完自由的状态,没考虑这么多。而接下来的两年多的时间属于第二阶段,这段时间我都在使用那个所谓的三层结构。再接下来到现在是第三个阶段,我又开始了一种新的项目构架模式。这个模式也是本文章要重点讨论的。这就是ASP.NET2.0中的强类型数据模式(使用XSD文件)。
到目前为止,我使用这个结构也已经开发了三个项目了,这三个项目中有一个是B/S软件,另外两个是C/S的WinForms,当然这三个项目都是使用VS2005开发的。据我了解,许多同行人士说,这种结构的最大优点是:可靠性,更少的错误和更少的调试时间花费。而对此结构的优点,我的最大感触却是:开发效率高!从发现这个结构时,我马上研究了它的优点和缺点,结果发现这的确是个挺好的选择。而且我觉得使用这样的方法开发,开发效率太高了,太便于维护了,简直是一种艺术!
为了方便大家的学习与交流,我列出强类型DataSet的创建方法。下面是个现成的例子:
强类型DataSet是一些提前定义了它们自己的列与表的泛型DataSet,这样编译器已经知道它们将会包含什么内容。不是把你的数据包装为一个"露指手套",一个强类型DataSet恰似一个"手套"。每一个Visual Studio的后续版本会使得强类型化一个DataSet的过程更为容易。在这个示例中,我们将使用来自于SQL Server 2005中的AdventureWorks数据库。这只要简单地执行如下步骤:

  1. 打开Visual Studio,然后创建一个新的ASP.NET网站。

  2. 在Solution Explorer中,占击以添加一个新项并且选择DataSet,并命名为AdventureWorks.xsd。Visual Studio推荐把这个DataSet文件放到App_Code文件夹下。

  3. 这个AdventureWorks.xsd将在设计模式下打开,并且激活"TableAdapter Configuration"向导。现在,仅仅点击一下"Cancel"即可。

  4. 定位到Server Explorer工具箱,导航到你的SQL Server 2005数据库和AdventureWorks数据库。(如果你还没有安装AdventureWorks数据库的话,你可以从微软的SQL Server 2005 Samples and Sample Databases下载页面下载它,还有另外的SQL Server 2005示例。)

  5. 把SalesOrderHeader和SalesOrderDetail表拖动到你的DataSet设计器窗口。现在,这个窗口应该类似于下面的屏幕快照。注意,对于我们加入的每个表,Visual Studio都创建一个强类型DataTable(该名称是基于原始的表)和一个TableAdapter。这个DataTable为我们定义了每一个列。这个表适配器是我们用来填充这个表的对象。缺省情况下,我们有一个Fill()方法,由它找到表中的每一行。



DataSet设计器窗口

  这个强类型DataSet将返回在这两个表中的所有记录。既然AdventureWorks数据库包含大量的订单信息,那么我们为什么不创建一个更为具体些的查询呢?我们可以把方法添加到我们的TableAdapter对象来检索一个更为具体的表的记录子集。首先,右击SalesOrderHeaderTableAdapter,并且选择"Add|Query"。选择"Use SQL statements"并且点击Next按钮。然后,选择"SELECT which returns rows"并且点击Next按钮。最后,在窗口中输入下列查询(或使用Query Builder来实现相同的任务):

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"复选框,然后点击Finish。在添加这个SELECT语句后,你的设计者现在应该有一个外部查询已经添加到这个SalesOrderHeaderTableAdapter,请参考下面的屏幕快照。



屏幕快照
四、 在一个ASP.NET页面上使用强类型DataSet

  通过创建强类型DataSet,我们可以仅通过编写几行代码就可以实现容易地在一个ASP.NET页面显示这些数据。首先,在你的网站上创建一个ASP.NET页面并且在设计模式中观察它。然后,拖放一个GridView控件到其上,保持其ID为GridView1。打开ASP.NET页面的源代码并且在文件的顶部导入AdventureWorksTableAdapters命名空间(在C#中,该语法为:"using AdventureWorksTableAdapters;")。最后,把下列代码添加到Page_Load事件处理器中:

//创建SalesOrderHeaderTableAdapter
SalesOrderHeaderTableAdapter salesAdapter =
new SalesOrderHeaderTableAdapter();
//得到发生于2004年7月1日之后的订单
AdventureWorks.SalesOrderHeaderDataTable Orders =
salesAdapter.GetDataBy(new DateTime(2004, 7, 1));
//把订单结果绑定到GridView
this.GridView1.DataSource = Orders;
this.GridView1.DataBind();
  这段代码是很简单的。我们创建SalesOrderHeaderTableAdapter的一个实例-我们将使用它来填充DataTable。注意,不是声明一个泛型DataTable,我们声明了一个SalesOrderHeaderDataTable类型的对象。为了填充这个DataTable,我们调用GetDateBy()方法并且传递给它一个DateTime对象。还要注意,甚至这个检索命令也是强类型化的,因为我们必须传递一个DateTime对象,而不仅仅是一个泛型对象。下面的屏幕快照显示了上面示例代码的清晰结果。



代码的清晰结果

  除了通过代码把结果绑定到GridView外,你还可以使用一个ObjectDataSource,设置它的TypeName属性为AdventureWorksTableAdapters.SalesOrderHeaderTableAdapter,并且把它的SelectMethod设置为GetData或GetDataBy。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐