使用linq批量插入SQL Server

时间:2013-07-11 05:45:55

标签: sql-server linq

我用linq读取xml文件并创建对象列表。

 StringReader stream=new StringReader(xml);
 XmlTextReader reader=new XmlTextReader(stream);

XElement req = XElement.Load(reader);
var users= (req.Descendants("Report")
           .Select(e => new { 
            Fname= e.Descendants("firstName").FirstOrDefault().Value,
            Lname = e.Descendants("lastName").FirstOrDefault().Value,
            personalId = e.Descendants("id").FirstOrDefault().Value,
            })).ToList();

用户值包括100,000个对象。

我希望将这些对象批量插入到数据库表中。

1 个答案:

答案 0 :(得分:1)

public static void saveData<T>(ref List<T> list, string destinationTableName, int batchSize)
{
    using (EntityDataReader<T> reader = new EntityDataReader<T>(list))
    using (System.Data.SqlClient.SqlBulkCopy sbc = new System.Data.SqlClient.SqlBulkCopy("your connection string"))
    {
        for (int i = 0; i < reader.FieldCount; i++)
        {
            string colName = reader.GetName(i);
            sbc.ColumnMappings.Add(colName, colName);
        }
        sbc.BatchSize = batchSize;
        sbc.DestinationTableName = destinationTableName;
        sbc.WriteToServer(reader);
    }
}

我正在使用此代码插入一个非常大的项目列表,T应该是一个已知的实体对象