• 轻松玩转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

  • 相关阅读:
    (转)Silverlight从程序集读取xaml文件
    阻止jQuery事件冒泡
    如何避免JQuery Dialog的内存泄露(转)
    VS2010 好用的javascript扩展工具
    C#计时器
    Silverlight初体验之设置启动页面
    javascript调用asp.net后置代码方法
    应用程序工程文件组织重要性
    javascript中字符串转化为json对象
    jQuery EasyUI
  • 原文地址:https://www.cnblogs.com/rickie/p/75815.html
Copyright © 2020-2023  润新知