關(guān)于 SqlServer 批量插入的方式,前段時(shí)間也有大神給出了好幾種批量插入的方式及對(duì)比測(cè)試(http://www.cnblogs.com/jiekzou/p/6145550.html),估計(jì)大家也都明白,最佳的方式就是用 SqlBulkCopy。自從LZ把Chloe.ORM開源以后,有不少園友/群友詢問(wèn),框架怎么批量插入數(shù)據(jù)。我的回答是不支持!最后建議他們用 SqlBulkCopy 的方式插入。在我們公司,我對(duì) SqlBulkCopy 封裝成了一個(gè) Helper 方法,使得批量插入更加方便,以滿足公司內(nèi)部不少批量插入需求。我也在群里分享了給他們。因?yàn)橐呀?jīng)有好幾位朋友咨詢過(guò),所以,我感覺應(yīng)該還有很多人還沒有自己的一個(gè)批量插入方法,因此,LZ今兒給大家分享下我封裝的這個(gè)批量插入方法,希望大家喜歡。

先看看封裝后的方法定義:

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

public static class SqlConnectionExtension
{    /// <summary>
    /// 使用 SqlBulkCopy 向 destinationTableName 表插入數(shù)據(jù)
    /// </summary>
    /// <typeparam name="TModel">必須擁有與目標(biāo)表所有字段對(duì)應(yīng)屬性</typeparam>
    /// <param name="conn"></param>
    /// <param name="modelList">要插入的數(shù)據(jù)</param>
    /// <param name="batchSize">SqlBulkCopy.BatchSize</param>
    /// <param name="destinationTableName">如果為 null,則使用 TModel 名稱作為 destinationTableName</param>
    /// <param name="bulkCopyTimeout">SqlBulkCopy.BulkCopyTimeout&l