From 9f2bae2a57c6262f43fae2109083f4a8e88109b9 Mon Sep 17 00:00:00 2001 From: sunkaixuna <610262374@qq.com> Date: Thu, 18 Nov 2021 00:33:00 +0800 Subject: [PATCH] - --- .../FastestProvider/FastestProvider.cs | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs index d7b9b40b0..542b42521 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs @@ -18,31 +18,39 @@ namespace SqlSugar } public int BulkCopy(List datas) { - return BulkCopyAsync(datas).GetAwaiter().GetResult(); + return BulkCopyAsync(datas).ConfigureAwait(true).GetAwaiter().GetResult(); } - public async Task BulkCopyAsync(List datas) + public async Task BulkCopyAsync(List datas) { - - DataTable tempDataTable = ReflectionInoCore.GetInstance().GetOrCreate("BulkCopyAsync" + typeof(T).FullName,()=> queryable.Where(it=>false).ToDataTable()); + DataTable dt = ToDdateTable(datas); + IFastBuilder buider = new SqlServerFastBuilder(); + buider.Context = context; + var result = await buider.ExecuteBulkCopyAsync(dt); + return result; + } + + private DataTable ToDdateTable(List datas) + { + DataTable tempDataTable = ReflectionInoCore.GetInstance().GetOrCreate("BulkCopyAsync" + typeof(T).FullName, () => queryable.Where(it => false).ToDataTable()); var dt = new DataTable(); 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(); - dt.TableName =queryable.SqlBuilder.GetTranslationTableName(entityInfo.DbTableName); + dt.TableName = queryable.SqlBuilder.GetTranslationTableName(entityInfo.DbTableName); var columns = entityInfo.Columns; foreach (var item in datas) { var dr = dt.NewRow(); foreach (var column in columns) { - if (column.IsIgnore || column.IsOnlyIgnoreInsert) + if (column.IsIgnore || column.IsOnlyIgnoreInsert) { continue; } var name = column.DbColumnName; - if (name == null) + if (name == null) { name = column.PropertyName; } @@ -51,12 +59,9 @@ namespace SqlSugar } 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) { if (value == null)