zoukankan      html  css  js  c++  java
  • 如果要使用DataAdapter来修改DataSet的子集时,请尽量对父级做修改。

    一、概述
        由于DataSet是一个强关联性组件,并且开发历史悠久,难免很多使用习惯与现在不同,并且也存在不少的Bug。在此,就DataSet的更改问题,做一个提醒式的说明。
    
    二、问题原因
        1.DataSet是一个强关联性的组件,它与外部的DataGridView、BindingNavigator和数据库等有着密切的联系,而且自身下面的子集,包括DataTable、DataRow、Cell等等,又有着密切的联系。因此,在更改它时,很容易引发问题。
        2.由于DataSet设计年代久远,并且其自身的结构非常复杂,因此,自身容易存在较多bug。并且,微软很多新产品,比如WCF,要对其进行完美支持,也是很难做到,事实上也是没有做到,从而导致很多问题。
    
    三、问题表现例子
        1.WCF不能直接传输DataSet的子集。比如WCF传输DataTable时,有时会发现,DataTable里的数据没有被传递过去。
        2.当使用DataAdapter,进行Update DataRow时,在事件RowUpdated中,如果对参数e.Row进行修改,则会发现,e.Row确实能被修改,但从其父级来访问这个row,发现该row的数据依然没有被更改。
    
    四.解决方案
        1.如果需要对DataSet的子集进行修改,则尽量修改父级,或者从父级入手来进行修改。比如,DataAdapter.Update(dataTable),最好改为:DataAdapter.Update(DataSet, "TableName")。
        2.尽量减少对DataSet以及子集的数据类型转换,防止变量的引用,被转换为值类型的复制。比如上文中的问题表现例子2。e.Row可能就是一个复制出来的值类型。
    
    如果有任何问题,请加QQ群 68328977 来进行讨论。
  • 相关阅读:
    处理安卓9patch(.9.png)图片
    block 方法参数中带有block 如何生成 如何使用
    hash_hmac
    日期(NSDate)是NSString类的格式(stringWithFormat)
    UITableView刷新单个cell或者单个Section
    iOS enum 定义与使用
    拼接url地址
    demo效果
    好东西
    关于ios7 navigationController中view的frame以及坐标点
  • 原文地址:https://www.cnblogs.com/xxxteam/p/2851268.html
Copyright © 2011-2022 走看看