轻松玩转Typed DataSet, Part IV

轻松玩转Typed DataSet, Part IV

 

Written by: Rickie Lee

Dec. 11, 2004

 

本文继续前面的Typed DataSet系列文章(轻松玩转Typed DataSet, Part 1-3),这里阐述Typed DataSet相关文件及其作用和Typed DataSet在多层企业级系统中的应用等等。

 

1. Typed DataSet相关文件及其作用

按照《轻松玩转Typed DataSet, Part I》中所提及的使用 Visual Studio .NET XSD 架构文件创建有类型的 DataSet一个典型的Typed DataSet包含如下3个文件,通过点击右边Solution Explorer上的Show all files可以看到:

1XSD

XSD文件存放定义typed DataSet SchemaXML内容,可以通过Annotation来定制typed DataSet,更详细信息请参考《轻松玩转Typed DataSet, Part II》。

 

2Class file(如CS

Class文件创建typed DataSet,一般由VS.Netxsd.exe命令行工具自动生成,包括继承DataSetTyped DataSet Class信息。该class文件实际上包括一系列继承并扩展DataSet, DataRowEventArgsclasses,因为上述继承关系,Typed DataSet仍然保留有untyped DataSet的所有特性,并没有丢失任何特性。

如在引用Typed DataSetDataTable对象时,你既可以使用Tables集合对象,也可以直接引用对应的属性Property,代码如下所示:

AnnotationTypedDataset.Orders

AnnotationTypedDataset.Tables[“Orders”]

 

3XSX

XSXXML Schema Extended)文件由XML Schema Designer自动生成,包含Designer界面上布局或可视化信息。

 

2. Typed DataSet在多层企业级系统中的应用

当在多层的企业级应用系统中采用Typed DataSet时,通常要求Typed DataSet在全部或多数tiers中可以使用。因此,一般情况下将Typed DataSet及其相关文件存放最低的层次,这样其他引用该层的项目和assemblies就可以引用Typed DataSet对象了。

Typed DataSet的用法示例:

(1) 定位Typed DataSet中的OrderDetailsRow数据行

OrdersDataSet.OrderDetailsRow oRow;

oRow = oDs.OrderDetails.FindByOrderIDProductID(

    nOrderID_OrderDetail, nProductID_Original);

(2) 检测是否列Column中包含null

if(!oDs.Orders[0].IsOrderDateNull())

{

    oDs.Orders[0].SetOrderDateNull();

}

(3) 循环Orders所有数据行及其关联的Order Details记录

foreach(OrdersDataSet.OrdersRow oOrderRow in oDs.Orders)

{

    Debug.WriteLine("OrderID = " + oOrderRow.OrderID);

    foreach(OrdersDataSet.OrderDetailsRow oOrderDetailRow in

        oOrderRow.GetOrderDetailsRows())

    {

        Debug.WriteLine(" — " + oOrderDetailRow.ProductName);

    }

}

 

需要注意的是:如果后台的Database structure发生变化,则需要同步Typed DataSetSchema信息。在这样情况下,即使采用Untyped DataSet,你也需要改变一些Client端代码。但使用Typed DataSet的好处是,编译器能够标识出用户代码中大部分需要修改的地方,因为编译器能够对Typed DataSet在编译期间进行类型安全检查,而untyped DataSet则只能在runtime期间发现错误并抛出异常。

 

 

References:

1. Rickie, 轻松玩转Typed DataSet, Part I

2. Rickie, 轻松玩转Typed DataSet, Part II

3. Rickie, 轻松玩转Typed DataSet, Part III

4. John Papa, Efficient Coding With Strongly Typed DataSets, http://msdn.microsoft.com/msdnmag/issues/04/12/DataPoints/default.aspx

原文地址:https://www.cnblogs.com/rickie/p/75815.html