Update mysql bulk copy support byte[]

This commit is contained in:
sunkaixuan 2023-08-26 13:48:59 +08:00
parent 1498647513
commit 1e2ee8ccf8
2 changed files with 40 additions and 3 deletions

View File

@ -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<int> 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();
}
}
}
}

View File

@ -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<int> ExecuteBulkCopyAsync(DataTable dt)
{
{
if (dt.Columns.Cast<DataColumn>().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)