批量保存数据 List<T> 的使用

来源:互联网 发布:淘宝司法拍卖是什么 编辑:程序博客网 时间:2024/04/29 01:08

     在机房收费这个系统中是没有涉及到数据批量操作这样的功能的,假如用户某天提出了批量添加或修改学生(卡)信息这样的需求,我们应该怎样实现呢?这是个很现实的问题,因为学生的信息在一入学的时候就会保存到一个相应的系统里,如教务系统。但是卡的信息可能是后来才添加的。所以很可能提这样的需求,从教务系统获取一份学生信息的名单,然后对这些学生进行批量建卡操作。

假设批量添加是通过DataGrid实现的,我们需要把DataGrid里面的每一条数据插入到数据库中。

            

方法一:

        //循环表格的所有行,逐行插入        for (int i = 0; i < DataGrid.Rows.Count; i++)        {            DataRowView rows = DataGrid[i] as DataRowView;     //取出表格的一行数据            CardinfoEntity enCardinfo = new CardinfoEntity();  //声明实体            //给实体赋值            enCardinfo.Cid = rows["Cid "].toString();            enCardinfo.Cardtype = rows["Cardtype "].toString();            enCardinfo.Cstatus = rows["Cstatus "].toString();            enCardinfo.Redate = rows["Redate "].toString();            new CardBLL().Insert(enCardinfo);                  //传入一个实体,插入信息               }


 

这样操作实现了批量添加的功能,但是仔细看看,假如我们插入了10条信息,这样程序在执行的时候一共走了10次(U<->B<->D)插入信息这条线,当然次数少我们看不出有什么影响,但是当同时插入上千条信息的时候呢?难道让程序再走上千次插入信息这个流程?这样程序的运行效率一下变负值了。并且如果程序采用一些服务如WCF的话,那就同时需要调用上千次WCF服务!假如在插入800条数据的时候程序崩溃了,剩下没插入的数据怎么处理?很显然也不能保证数据的完整性。

在数据量大的时候,这样做肯定是不可取的,怎么去改进呢?既然循环单条插入影响效率,那我们就应该想办法对这一条条的数据进行“打包”,然后再集中处理。

如何打包?这就用到了我们熟悉的List<>泛型集合。

方法二:

        //声明一个CardinfoEntity类型的泛型集合        List<CardinfoEntity> enCardinfoList = new List<CardinfoEntity>();        for (int i = 0; i < DataGrid.Rows.Count; i++)        {            DataRowView rows = DataGrid[i] as DataRowView;     //取出表格的一行数据            CardinfoEntity enCardinfo = new CardinfoEntity();  //声明实体            //给实体赋值            enCardinfo.Cid = rows["Cid "].toString();            enCardinfo.Cardtype = rows["Cardtype "].toString();            enCardinfo.Cstatus = rows["Cstatus "].toString();            enCardinfo.Redate = rows["Redate "].toString();            enCardinfoList.Add(enCardinfo);                    //将实体添加到集合中        }        new CardBLL().Insert(enCardinfoList);                  //将整个集合传入数据层,循环List<>进行添加


 

声明一个List<>把要插入的信息全部添加到该集合中,然后统一传到数据访问层,进行添加操作。这样做程序只走了一遍流程,仅调用了一次WCF服务,提高了运行效率,再加上事务处理,也就很好的保证了数据的完整性。

现在写代码,不再是写出来就行,能实现功能就行。更需要考虑的是怎么让代码更有价值,让程序运行更有效率。

 

 

 

oノo═══════════════════════╲  

│ヽ.学无止境, 分享至上。                                   │  

│   出自:  http://blog.csdn.net/u010028869     .ヽ│  

╲═══════════════ヾ

 

 

5 0