/// <summary>
/// 批量添加
/// </summary>
/// <param name="modelList"></param>
public void BtachAdd(IEnumerable<SMSSendReport> modelList)
{
var dt = modelList.ToDataTable("SMS_SendReport");
var conn = DatabaseFactory.CreateDatabase().CreateConnection();
using (conn)
{
if (conn.State == ConnectionState.Closed) conn.Open();
using (var sqlbulkcopy = new SqlBulkCopy((SqlConnection)conn))
{
sqlbulkcopy.DestinationTableName = dt.TableName;
for (var i = 0; i < dt.Columns.Count; i++)
{
sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
}
sqlbulkcopy.WriteToServer(dt);
}
}
}
/// <summary>
/// 把列表转换为DataTable
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static DataTable ToDataTable<T>(this IEnumerable<T> list, string tableName)
{
var type = typeof(T);
var properties = type.GetProperties().ToList();
var newDt = new DataTable(tableName);
properties.ForEach(propertie =>
{
Type columnType;
if (propertie.PropertyType.IsGenericType && propertie.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
{
columnType = propertie.PropertyType.GetGenericArguments()[0];
}
else
{
columnType = propertie.PropertyType;
}
newDt.Columns.Add(propertie.Name, columnType);
});
foreach (var item in list)
{
var newRow = newDt.NewRow();
properties.ForEach(propertie =>
{
newRow[propertie.Name] = propertie.GetValue(item, null) ?? DBNull.Value;
});
newDt.Rows.Add(newRow);
}
return newDt;
}