zoukankan      html  css  js  c++  java
  • Effective C# Item41 : DataSet优于自定义结构

        大家认为DataSet不好的两个理由:1. 使用XML序列化机制的DataSet与非.NET代码之间的交互不是很好,使用DataSet的Web Services API很难与不支持.NET框架的系统交互;2. DataSet是一个非常通用的容器,程序员可能会牺牲某些.NET框架的类型安全而误用DataSet。

        DataSet设计的初衷:为关系型数据库的一个离线缓存,它可以存储很多歌DataTable,每个DataTable中又存储于数据库相匹配的行与列,DataSet及其成员都支持数据绑定,另外,DataSet还支持各个DataTable间的关系以及给DataSet中的数据添加约束。

        DataSet不是一个强类型容器,它是一个关于DataTable的字典集合,并且DataTable中的列也是一个字典结构,我们通常情况下,会使用以下的方式来访问DataSet中的数据。

    int val = ( int )MyDataSet.Tables[ "table1" ].Rows[ 0 ][ "total" ];
        以上有两个问题:1. DataSet中的数据都是System.Object类型,程序在使用时,还需要进行强制类型转换;2. 在访问DataSet中的数据时,还需要通过硬编码的方式来定位表名和列名。

        通常,我们希望以下面这种语句来访问DataSet中的数据。

    int val = MyDataSet.table1.Rows[ 0 ].total;

        如果想以上面这种方式来访问DataSet中的数据,我们可以有两种方式:1. 使用强类型的DataSet(个人不推荐,因为在系统开发阶段,很难保证数据结构的稳定性);2. 使用某种ORM框架,例如NHibernate。要尽量避免自己编写存储数据的结构。

  • 相关阅读:
    Web API系列(三)统一异常处理
    Web API系列(二)接口安全和参数校验
    Web API系列(一)设计经验与总结
    文件并发(日志处理)--队列--Redis+Log4Net
    Jquery手机下拉刷新,下拉加载数据
    nginx 几个参数
    op cache config
    历史问题回顾
    第三方服务的使用
    nginx+php-fpm json_encode 到client pages 截断
  • 原文地址:https://www.cnblogs.com/wing011203/p/1675125.html
Copyright © 2011-2022 走看看