diff --git a/Src/Asp.NetCore2/SqlSugar/OnlyCore/MySqlFastBuilder.cs b/Src/Asp.NetCore2/SqlSugar/OnlyCore/MySqlFastBuilder.cs new file mode 100644 index 000000000..ec8b54580 --- /dev/null +++ b/Src/Asp.NetCore2/SqlSugar/OnlyCore/MySqlFastBuilder.cs @@ -0,0 +1,34 @@ +using MySqlConnector; +using System; +using System.Collections.Generic; +using System.Data; +using System.Text; +using System.Threading.Tasks; + +namespace SqlSugar +{ + public partial class MySqlFastBuilder : FastBuilder, IFastBuilder + { + private async Task MySqlConnectorBulkCopy(DataTable dt) + { + try + { + this.Context.Open(); + var tran = (MySqlTransaction)this.Context.Ado.Transaction; + var connection = (MySqlConnection)this.Context.Ado.Connection; + MySqlBulkCopy bulkCopy = new MySqlBulkCopy(connection, tran); + bulkCopy.DestinationTableName= dt.TableName; + await bulkCopy.WriteToServerAsync(dt); + return dt.Rows.Count; + } + catch (Exception) + { + throw; + } + finally + { + CloseDb(); + } + } + } +} \ No newline at end of file diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlFastBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlFastBuilder.cs index 545d01d38..18517dc13 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlFastBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlFastBuilder.cs @@ -11,12 +11,15 @@ using System.Threading.Tasks; namespace SqlSugar { - public class MySqlFastBuilder:FastBuilder,IFastBuilder + public partial class MySqlFastBuilder:FastBuilder,IFastBuilder { public override string UpdateSql { get; set; } = @"UPDATE {1} TM INNER JOIN {2} TE ON {3} SET {0} "; public async Task ExecuteBulkCopyAsync(DataTable dt) - { - + { + if (dt.Columns.Cast().Any(it => it.DataType == UtilConstants.ByteArrayType)) + { + return await MySqlConnectorBulkCopy(dt); + } var dllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bulkcopyfiles"); DirectoryInfo dir = new DirectoryInfo(dllPath); if (!dir.Exists)