mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-11-09 02:44:58 +08:00
Update core
This commit is contained in:
@@ -10,7 +10,7 @@ namespace SqlSugar
|
|||||||
public class FastBuilder
|
public class FastBuilder
|
||||||
{
|
{
|
||||||
public SqlSugarProvider Context { get; set; }
|
public SqlSugarProvider Context { get; set; }
|
||||||
|
public virtual string CharacterSet { get; set; }
|
||||||
public virtual string UpdateSql { get; set; } = @"UPDATE TM
|
public virtual string UpdateSql { get; set; } = @"UPDATE TM
|
||||||
SET {0}
|
SET {0}
|
||||||
FROM {1} TM
|
FROM {1} TM
|
||||||
|
|||||||
@@ -14,7 +14,9 @@ namespace SqlSugar
|
|||||||
switch (this.context.CurrentConnectionConfig.DbType)
|
switch (this.context.CurrentConnectionConfig.DbType)
|
||||||
{
|
{
|
||||||
case DbType.MySql:
|
case DbType.MySql:
|
||||||
return new MySqlFastBuilder();
|
var result= new MySqlFastBuilder();
|
||||||
|
result.CharacterSet = this.CharacterSet;
|
||||||
|
return result;
|
||||||
case DbType.SqlServer:
|
case DbType.SqlServer:
|
||||||
return new SqlServerFastBuilder();
|
return new SqlServerFastBuilder();
|
||||||
case DbType.Sqlite:
|
case DbType.Sqlite:
|
||||||
@@ -24,7 +26,9 @@ namespace SqlSugar
|
|||||||
case DbType.PostgreSQL:
|
case DbType.PostgreSQL:
|
||||||
return new PostgreSQLFastBuilder(this.entityInfo);
|
return new PostgreSQLFastBuilder(this.entityInfo);
|
||||||
case DbType.MySqlConnector:
|
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:
|
case DbType.Dm:
|
||||||
break;
|
break;
|
||||||
case DbType.Kdbndp:
|
case DbType.Kdbndp:
|
||||||
@@ -74,13 +78,17 @@ namespace SqlSugar
|
|||||||
name = column.PropertyName;
|
name = column.PropertyName;
|
||||||
}
|
}
|
||||||
var value = ValueConverter(column, PropertyCallAdapterProvider<T>.GetInstance(column.PropertyName).InvokeGet(item));
|
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)
|
if (value.ObjToBool() == false)
|
||||||
{
|
{
|
||||||
value = DBNull.Value;
|
value = DBNull.Value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (column.UnderType == UtilConstants.DateTimeOffsetType&& value!=null)
|
||||||
|
{
|
||||||
|
value = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)value);
|
||||||
|
}
|
||||||
dr[name] = value;
|
dr[name] = value;
|
||||||
}
|
}
|
||||||
dt.Rows.Add(dr);
|
dt.Rows.Add(dr);
|
||||||
|
|||||||
@@ -12,6 +12,12 @@ namespace SqlSugar
|
|||||||
private int Size { get; set; }
|
private int Size { get; set; }
|
||||||
private string CacheKey { get; set; }
|
private string CacheKey { get; set; }
|
||||||
private string CacheKeyLike { 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()
|
public IFastest<T> RemoveDataCache()
|
||||||
{
|
{
|
||||||
CacheKey = typeof(T).FullName;
|
CacheKey = typeof(T).FullName;
|
||||||
|
|||||||
@@ -483,11 +483,12 @@ namespace SqlSugar
|
|||||||
name = this.AsTables.First(it => it.Key == name).Value;
|
name = this.AsTables.First(it => it.Key == name).Value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var isSubQuery = name!=null&& name.StartsWith("(") && name.EndsWith(")");
|
||||||
return string.Format(
|
return string.Format(
|
||||||
this.JoinTemplate,
|
this.JoinTemplate,
|
||||||
joinInfo.JoinType.ToString() + UtilConstants.Space,
|
joinInfo.JoinType.ToString() + UtilConstants.Space,
|
||||||
Builder.GetTranslationTableName(name) + 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);
|
joinInfo.JoinWhere);
|
||||||
}
|
}
|
||||||
public virtual void Clear()
|
public virtual void Clear()
|
||||||
@@ -509,6 +510,11 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public string GetSqlQuerySql(string result)
|
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))
|
if (this.IsSqlQuery&&this.OldSql.HasValue() && (Skip == null && Take == null) && (this.WhereInfos == null || this.WhereInfos.Count == 0))
|
||||||
{
|
{
|
||||||
return this.OldSql;
|
return this.OldSql;
|
||||||
|
|||||||
@@ -336,7 +336,7 @@ namespace SqlSugar
|
|||||||
public virtual string AggregateDistinctCount(MethodCallExpressionModel model)
|
public virtual string AggregateDistinctCount(MethodCallExpressionModel model)
|
||||||
{
|
{
|
||||||
var parameter = model.Args[0];
|
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)
|
public virtual string MappingColumn(MethodCallExpressionModel model)
|
||||||
|
|||||||
@@ -986,6 +986,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
return $"CONVERT(varchar(100),convert(datetime,{value}), 23)";
|
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())
|
else if (formatString == "yyyy-MM-dd HH:mm:ss" && IsSqlServer())
|
||||||
{
|
{
|
||||||
return $"CONVERT(varchar(100),convert(datetime,{value}), 120)";
|
return $"CONVERT(varchar(100),convert(datetime,{value}), 120)";
|
||||||
|
|||||||
@@ -63,10 +63,10 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
result = queryBuilder.GetSelectByItems(selectItems);
|
result = queryBuilder.GetSelectByItems(selectItems);
|
||||||
if (_context.CurrentConnectionConfig.DbType == DbType.PostgreSQL)
|
//if (_context.CurrentConnectionConfig.DbType == DbType.PostgreSQL)
|
||||||
{
|
//{
|
||||||
result = result.ToLower();
|
// result = result.ToLower();
|
||||||
}
|
//}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ namespace SqlSugar
|
|||||||
public interface IFastBuilder
|
public interface IFastBuilder
|
||||||
{
|
{
|
||||||
SqlSugarProvider Context { get; set; }
|
SqlSugarProvider Context { get; set; }
|
||||||
|
string CharacterSet { get; set; }
|
||||||
Task<int> UpdateByTempAsync(string tableName,string tempName,string [] updateColumns,string[] whereColumns);
|
Task<int> UpdateByTempAsync(string tableName,string tempName,string [] updateColumns,string[] whereColumns);
|
||||||
Task<int> ExecuteBulkCopyAsync(DataTable dt);
|
Task<int> ExecuteBulkCopyAsync(DataTable dt);
|
||||||
Task CreateTempAsync<T>(DataTable dt) where T : class, new();
|
Task CreateTempAsync<T>(DataTable dt) where T : class, new();
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ namespace SqlSugar
|
|||||||
IFastest<T> RemoveDataCache(string cacheKey);
|
IFastest<T> RemoveDataCache(string cacheKey);
|
||||||
IFastest<T> AS(string tableName);
|
IFastest<T> AS(string tableName);
|
||||||
IFastest<T> PageSize(int Size);
|
IFastest<T> PageSize(int Size);
|
||||||
|
IFastest<T> SetCharacterSet(string CharacterSet);
|
||||||
int BulkCopy(List<T> datas);
|
int BulkCopy(List<T> datas);
|
||||||
Task<int> BulkCopyAsync(List<T> datas);
|
Task<int> BulkCopyAsync(List<T> datas);
|
||||||
int BulkCopy(string tableName,DataTable dataTable);
|
int BulkCopy(string tableName,DataTable dataTable);
|
||||||
|
|||||||
@@ -438,7 +438,8 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
string template = "ALTER table {0} CHANGE COLUMN {1} {1} {3} default {2}";
|
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));
|
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);
|
this.Context.Ado.ExecuteCommand(sql);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,10 @@ namespace SqlSugar
|
|||||||
TableName = dt.TableName,
|
TableName = dt.TableName,
|
||||||
Local = true,
|
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());
|
bulk.Columns.AddRange(dt.Columns.Cast<DataColumn>().Select(colum =>new MySqlBuilder().GetTranslationColumnName(colum.ColumnName)).Distinct().ToArray());
|
||||||
result= await bulk.LoadAsync();
|
result= await bulk.LoadAsync();
|
||||||
//执行成功才删除文件
|
//执行成功才删除文件
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ namespace SqlSugar
|
|||||||
.MappingTables
|
.MappingTables
|
||||||
.FirstOrDefault(it => it.EntityName.Equals(name, StringComparison.CurrentCultureIgnoreCase));
|
.FirstOrDefault(it => it.EntityName.Equals(name, StringComparison.CurrentCultureIgnoreCase));
|
||||||
name = (mappingInfo == null ? name : mappingInfo.DbTableName);
|
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));
|
return string.Join(".", name.ToLower(isAutoToLower).Split('.').Select(it => SqlTranslationLeft + it + SqlTranslationRight));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -484,6 +484,22 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
return UtilMethods.GetDateTimeOffsetByDateTime(Convert.ToDateTime(item.FieldValue));
|
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
|
else
|
||||||
{
|
{
|
||||||
return item.FieldValue;
|
return item.FieldValue;
|
||||||
|
|||||||
Reference in New Issue
Block a user