我用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个对象。
我希望将这些对象批量插入到数据库表中。
答案 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应该是一个已知的实体对象