This commit is contained in:
sunkaixuna
2021-11-18 00:33:00 +08:00
parent 4e9fb057e9
commit 9f2bae2a57

View File

@@ -18,19 +18,27 @@ namespace SqlSugar
} }
public int BulkCopy(List<T> datas) public int BulkCopy(List<T> datas)
{ {
return BulkCopyAsync(datas).GetAwaiter().GetResult(); return BulkCopyAsync(datas).ConfigureAwait(true).GetAwaiter().GetResult();
} }
public async Task<int> BulkCopyAsync(List<T> datas) public async Task<int> BulkCopyAsync(List<T> datas)
{ {
DataTable dt = ToDdateTable(datas);
IFastBuilder buider = new SqlServerFastBuilder();
buider.Context = context;
var result = await buider.ExecuteBulkCopyAsync(dt);
return result;
}
DataTable tempDataTable = ReflectionInoCore<DataTable>.GetInstance().GetOrCreate("BulkCopyAsync" + typeof(T).FullName,()=> queryable.Where(it=>false).ToDataTable()); private DataTable ToDdateTable(List<T> datas)
{
DataTable tempDataTable = ReflectionInoCore<DataTable>.GetInstance().GetOrCreate("BulkCopyAsync" + typeof(T).FullName, () => queryable.Where(it => false).ToDataTable());
var dt = new DataTable(); var dt = new DataTable();
foreach (DataColumn item in tempDataTable.Columns) foreach (DataColumn item in tempDataTable.Columns)
{ {
dt.Columns.Add(item.ColumnName,item.DataType); dt.Columns.Add(item.ColumnName, item.DataType);
} }
var entityInfo = this.context.EntityMaintenance.GetEntityInfo<T>(); var entityInfo = this.context.EntityMaintenance.GetEntityInfo<T>();
dt.TableName =queryable.SqlBuilder.GetTranslationTableName(entityInfo.DbTableName); dt.TableName = queryable.SqlBuilder.GetTranslationTableName(entityInfo.DbTableName);
var columns = entityInfo.Columns; var columns = entityInfo.Columns;
foreach (var item in datas) foreach (var item in datas)
{ {
@@ -51,12 +59,9 @@ namespace SqlSugar
} }
dt.Rows.Add(dr); dt.Rows.Add(dr);
} }
IFastBuilder buider = new SqlServerFastBuilder();
buider.Context = context;
var result= await buider.ExecuteBulkCopyAsync(dt);
return result;
}
return dt;
}
private object ValueConverter(EntityColumnInfo columnInfo,object value) private object ValueConverter(EntityColumnInfo columnInfo,object value)
{ {
if (value == null) if (value == null)