Db.Fastest mysql set characterset

This commit is contained in:
sunkaixuan 2022-03-01 18:05:38 +08:00
parent 24a7656fcd
commit c119b4bb5b
6 changed files with 18 additions and 3 deletions

View File

@ -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

View File

@ -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<IFastBuilder>("SqlSugar.MySqlConnector.MySqlFastBuilder");
var resultConnector = InstanceFactory.CreateInstance<IFastBuilder>("SqlSugar.MySqlConnector.MySqlFastBuilder");
resultConnector.CharacterSet = this.CharacterSet;
return resultConnector;
case DbType.Dm:
break;
case DbType.Kdbndp:

View File

@ -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<T> RemoveDataCache()
{
CacheKey = typeof(T).FullName;

View File

@ -10,6 +10,7 @@ namespace SqlSugar
public interface IFastBuilder
{
SqlSugarProvider Context { get; set; }
string CharacterSet { get; set; }
Task<int> UpdateByTempAsync(string tableName,string tempName,string [] updateColumns,string[] whereColumns);
Task<int> ExecuteBulkCopyAsync(DataTable dt);
Task CreateTempAsync<T>(DataTable dt) where T : class, new();

View File

@ -12,6 +12,7 @@ namespace SqlSugar
IFastest<T> RemoveDataCache(string cacheKey);
IFastest<T> AS(string tableName);
IFastest<T> PageSize(int Size);
void SetCharacterSet(string CharacterSet);
int BulkCopy(List<T> datas);
Task<int> BulkCopyAsync(List<T> datas);
int BulkCopy(string tableName,DataTable dataTable);

View File

@ -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<DataColumn>().Select(colum =>new MySqlBuilder().GetTranslationColumnName(colum.ColumnName)).Distinct().ToArray());
result= await bulk.LoadAsync();
//执行成功才删除文件