Update core

This commit is contained in:
sunkaixuan
2022-03-04 14:50:59 +08:00
parent fa38879bfc
commit f90117abf1
13 changed files with 59 additions and 12 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:
@@ -74,13 +78,17 @@ namespace SqlSugar
name = column.PropertyName;
}
var value = ValueConverter(column, PropertyCallAdapterProvider<T>.GetInstance(column.PropertyName).InvokeGet(item));
if (isMySql&& column.UnderType==UtilConstants.BoolType)
if (isMySql && column.UnderType == UtilConstants.BoolType)
{
if (value.ObjToBool() == false)
{
value = DBNull.Value;
}
}
else if (column.UnderType == UtilConstants.DateTimeOffsetType&& value!=null)
{
value = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)value);
}
dr[name] = value;
}
dt.Rows.Add(dr);

View File

@@ -12,6 +12,12 @@ namespace SqlSugar
private int Size { get; set; }
private string CacheKey { get; set; }
private string CacheKeyLike { get; set; }
private string CharacterSet { get; set; }
public IFastest<T> SetCharacterSet(string CharacterSet)
{
this.CharacterSet = CharacterSet;
return this;
}
public IFastest<T> RemoveDataCache()
{
CacheKey = typeof(T).FullName;

View File

@@ -483,11 +483,12 @@ namespace SqlSugar
name = this.AsTables.First(it => it.Key == name).Value;
}
}
var isSubQuery = name!=null&& name.StartsWith("(") && name.EndsWith(")");
return string.Format(
this.JoinTemplate,
joinInfo.JoinType.ToString() + UtilConstants.Space,
Builder.GetTranslationTableName(name) + UtilConstants.Space,
joinInfo.ShortName + UtilConstants.Space + (TableWithString == SqlWith.Null ? " " : TableWithString),
joinInfo.ShortName + UtilConstants.Space + (TableWithString == SqlWith.Null|| isSubQuery ? " " : TableWithString),
joinInfo.JoinWhere);
}
public virtual void Clear()
@@ -509,6 +510,11 @@ namespace SqlSugar
}
public string GetSqlQuerySql(string result)
{
if (GetTableNameString == " (-- No table ) t ")
{
result = "-- No table ";
return result;
}
if (this.IsSqlQuery&&this.OldSql.HasValue() && (Skip == null && Take == null) && (this.WhereInfos == null || this.WhereInfos.Count == 0))
{
return this.OldSql;

View File

@@ -336,7 +336,7 @@ namespace SqlSugar
public virtual string AggregateDistinctCount(MethodCallExpressionModel model)
{
var parameter = model.Args[0];
return string.Format("COUNT(DISTINCT{0})", parameter.MemberName);
return string.Format("COUNT(DISTINCT {0} )", parameter.MemberName);
}
public virtual string MappingColumn(MethodCallExpressionModel model)

View File

@@ -986,6 +986,10 @@ namespace SqlSugar
{
return $"CONVERT(varchar(100),convert(datetime,{value}), 23)";
}
else if (formatString == "yyyy-MM" && IsSqlServer())
{
return $"CONVERT(varchar(7),convert(datetime,{value}), 23)";
}
else if (formatString == "yyyy-MM-dd HH:mm:ss" && IsSqlServer())
{
return $"CONVERT(varchar(100),convert(datetime,{value}), 120)";

View File

@@ -63,10 +63,10 @@ namespace SqlSugar
}
}
result = queryBuilder.GetSelectByItems(selectItems);
if (_context.CurrentConnectionConfig.DbType == DbType.PostgreSQL)
{
result = result.ToLower();
}
//if (_context.CurrentConnectionConfig.DbType == DbType.PostgreSQL)
//{
// result = result.ToLower();
//}
return result;
}
}

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);
IFastest<T> SetCharacterSet(string CharacterSet);
int BulkCopy(List<T> datas);
Task<int> BulkCopyAsync(List<T> datas);
int BulkCopy(string tableName,DataTable dataTable);

View File

@@ -438,7 +438,8 @@ namespace SqlSugar
{
string template = "ALTER table {0} CHANGE COLUMN {1} {1} {3} default {2}";
var dbColumnInfo = this.Context.DbMaintenance.GetColumnInfosByTableName(tableName).First(it => it.DbColumnName.Equals(columnName, StringComparison.CurrentCultureIgnoreCase));
string sql = string.Format(template, tableName, columnName, defaultValue, dbColumnInfo.DataType);
var value = Regex.Match(defaultValue, @"\(\d\)$").Value;
string sql = string.Format(template, tableName, columnName, defaultValue, dbColumnInfo.DataType+ value);
this.Context.Ado.ExecuteCommand(sql);
return true;
}

View File

@@ -44,6 +44,10 @@ namespace SqlSugar
TableName = dt.TableName,
Local = true,
};
if (this.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();
//执行成功才删除文件

View File

@@ -81,7 +81,7 @@ namespace SqlSugar
.MappingTables
.FirstOrDefault(it => it.EntityName.Equals(name, StringComparison.CurrentCultureIgnoreCase));
name = (mappingInfo == null ? name : mappingInfo.DbTableName);
if (name.Contains(".")&& !name.Contains("("))
if (name.Contains(".")&& !name.Contains("(")&&!name.Contains("\".\""))
{
return string.Join(".", name.ToLower(isAutoToLower).Split('.').Select(it => SqlTranslationLeft + it + SqlTranslationRight));
}

View File

@@ -484,6 +484,22 @@ namespace SqlSugar
{
return UtilMethods.GetDateTimeOffsetByDateTime(Convert.ToDateTime(item.FieldValue));
}
else if (item.CSharpTypeName.EqualCase(UtilConstants.GuidType.Name))
{
return Guid.Parse(item.FieldValue);
}
else if (item.CSharpTypeName == "int")
{
return Convert.ToInt32(item.FieldValue);
}
else if (item.CSharpTypeName == "long")
{
return Convert.ToInt64(item.FieldValue);
}
else if (item.CSharpTypeName == "short")
{
return Convert.ToInt16(item.FieldValue);
}
else
{
return item.FieldValue;