修复BUG: SqlServer批导BulkInsert
C# 全选
/// <summary>
/// 使用SqlBulkCopy批导
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="entities"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public override int BulkInsert<T>(List<T> entities, string tableName = null)
{
using (SqlBulkCopy bulkCopy = CreateSqlBulkCopy())
{
bulkCopy.BatchSize = 5000; // 每批处理行数
bulkCopy.BulkCopyTimeout = 600; // 超时时间(秒)
//获取实体类的表名
if (String.IsNullOrEmpty(tableName))
{
var tableAttribute = (TableAttribute)typeof(T).GetCustomAttributes(typeof(TableAttribute), false).First();
tableName = tableAttribute.Name;
}
//需要加dbo.
if (!tableName.StartsWith("dbo")) tableName = "dbo." + tableName;
bulkCopy.DestinationTableName = tableName;
//转换为DataTable
var table = entities.ToDataTable();
table.AcceptChanges();
bulkCopy.WriteToServer(table);
bulkCopy.Close();
return table.Rows.Count;
}
}
使用方法
C# 全选
_Database.BulkInsert<tb_PriceListCustomer>(list);
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
CSFramework.EF C/S框架网