From c119b4bb5be49adfd855eaaa5a7fb008c929cce1 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 1 Mar 2022 18:05:38 +0800 Subject: [PATCH] Db.Fastest mysql set characterset --- .../SqlSugar/Abstract/FastestProvider/FastBuilder.cs | 2 +- Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs | 8 ++++++-- Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Setting.cs | 5 +++++ Src/Asp.Net/SqlSugar/Interface/IFastBuilder.cs | 1 + Src/Asp.Net/SqlSugar/Interface/IFastest.cs | 1 + .../Realization/MySql/SqlBuilder/MySqlFastBuilder.cs | 4 ++++ 6 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastBuilder.cs index b94adb71a..441e7a6cb 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastBuilder.cs @@ -10,7 +10,7 @@ namespace SqlSugar public class FastBuilder { public SqlSugarProvider Context { get; set; } - + public virtual string CharacterSet { get; set; } public virtual string UpdateSql { get; set; } = @"UPDATE TM SET {0} FROM {1} TM diff --git a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs index 28d37d45f..548bbc0c8 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs @@ -14,7 +14,9 @@ namespace SqlSugar switch (this.context.CurrentConnectionConfig.DbType) { case DbType.MySql: - return new MySqlFastBuilder(); + var result= new MySqlFastBuilder(); + result.CharacterSet = this.CharacterSet; + return result; case DbType.SqlServer: return new SqlServerFastBuilder(); case DbType.Sqlite: @@ -24,7 +26,9 @@ namespace SqlSugar case DbType.PostgreSQL: return new PostgreSQLFastBuilder(this.entityInfo); case DbType.MySqlConnector: - return InstanceFactory.CreateInstance("SqlSugar.MySqlConnector.MySqlFastBuilder"); + var resultConnector = InstanceFactory.CreateInstance("SqlSugar.MySqlConnector.MySqlFastBuilder"); + resultConnector.CharacterSet = this.CharacterSet; + return resultConnector; case DbType.Dm: break; case DbType.Kdbndp: diff --git a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Setting.cs b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Setting.cs index 0ed7e03ac..12751cb83 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Setting.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Setting.cs @@ -12,6 +12,11 @@ namespace SqlSugar private int Size { get; set; } private string CacheKey { get; set; } private string CacheKeyLike { get; set; } + private string CharacterSet { get; set; } + public void SetCharacterSet(string CharacterSet) + { + this.CharacterSet = CharacterSet; + } public IFastest RemoveDataCache() { CacheKey = typeof(T).FullName; diff --git a/Src/Asp.Net/SqlSugar/Interface/IFastBuilder.cs b/Src/Asp.Net/SqlSugar/Interface/IFastBuilder.cs index 2a1a3076d..c36eb3276 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IFastBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IFastBuilder.cs @@ -10,6 +10,7 @@ namespace SqlSugar public interface IFastBuilder { SqlSugarProvider Context { get; set; } + string CharacterSet { get; set; } Task UpdateByTempAsync(string tableName,string tempName,string [] updateColumns,string[] whereColumns); Task ExecuteBulkCopyAsync(DataTable dt); Task CreateTempAsync(DataTable dt) where T : class, new(); diff --git a/Src/Asp.Net/SqlSugar/Interface/IFastest.cs b/Src/Asp.Net/SqlSugar/Interface/IFastest.cs index 4f3cfe8ae..3a62bc253 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IFastest.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IFastest.cs @@ -12,6 +12,7 @@ namespace SqlSugar IFastest RemoveDataCache(string cacheKey); IFastest AS(string tableName); IFastest PageSize(int Size); + void SetCharacterSet(string CharacterSet); int BulkCopy(List datas); Task BulkCopyAsync(List datas); int BulkCopy(string tableName,DataTable dataTable); diff --git a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlFastBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlFastBuilder.cs index 1aadc759e..b1127f7f2 100644 --- a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlFastBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlFastBuilder.cs @@ -44,6 +44,10 @@ namespace SqlSugar TableName = dt.TableName, Local = true, }; + if (bulk.CharacterSet.HasValue()) + { + bulk.CharacterSet = this.CharacterSet; + } bulk.Columns.AddRange(dt.Columns.Cast().Select(colum =>new MySqlBuilder().GetTranslationColumnName(colum.ColumnName)).Distinct().ToArray()); result= await bulk.LoadAsync(); //执行成功才删除文件