关于.net中dataset的保存问题,一般是使用dataadpter.update()方法,这个方法有四个重载,也就是三种方法:
A、.update(dataset)更新整个数据集
B、.update(datatable)或.update(dataset,tablename) 更新数据集中的指定表
C、.update(datarow())更新指定的datarow数组
考虑到以下场景:
1、数据量较大,且是master/detail(多个表)组成的数据集,要求保存速度够快;
2、一些字段是由另一些字段通过触发器生成的(如出生日期不是由用户录入,而是由身份证号生成的);
3、对于新增的记录,需要返回identity值,用于标识新增记录,从面继续新增子记录;
使用A、B方法,可以满足2、3种场景需要,但1不能满足,且容易造成脏数据(请读者自行查询)
使用da.update(dataset.getchanges())或者da.update(datatable.getchanges()),可以带来速度上的增快,但不知怎么回事,第2、3种要求达不到了,返回不了更新的值(da的insertcommandtext中考虑了新增后,再select新记录录[及字段indentity]的场景);试验了很多种办法