/// <summary>
/// 批量向表中插入数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="connectstring"> string connStr=ConfigurationManager.ConnectionStrings["CodeFirstModel2"].ToString();</param>
/// <param name="tableName">表名</param>
/// <param name="list">IList</param>
public void AddByBluckCopy<T>(string connectstring, string tableName, IList<T> list)
{
using (SqlBulkCopy bulk = new SqlBulkCopy(connectstring))
{
bulk.BatchSize = list.Count;
bulk.DestinationTableName = tableName;
var table = new DataTable();
var props = TypeDescriptor.GetProperties(typeof(T)).Cast<PropertyDescriptor>()
.Where(propertyInfo => propertyInfo.PropertyType.Namespace.Equals("System"))
.ToArray();
foreach (var propertyInfo in props)
{
bulk.ColumnMappings.Add(propertyInfo.Name, propertyInfo.Name);
table.Columns.Add(propertyInfo.Name, Nullable.GetUnderlyingType(propertyInfo.PropertyType) ?? propertyInfo.PropertyType);
}
var values = new object[props.Length];
foreach (var item in list)
{
for (var i = 0; i < values.Length; i++)
{
values[i] = props[i].GetValue(item);
}
table.Rows.Add(values);
}
bulk.WriteToServer(table);
}
}