mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-20 02:29:39 +08:00
Update core
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
<package >
|
<package >
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>sqlSugar</id>
|
<id>sqlSugar</id>
|
||||||
<version>4.9.9.5</version>
|
<version>4.9.9.6</version>
|
||||||
<title>SqlSugar .Net Framework 4.0+ ORM </title>
|
<title>SqlSugar .Net Framework 4.0+ ORM </title>
|
||||||
<authors>sun kaixuan</authors>
|
<authors>sun kaixuan</authors>
|
||||||
<owners>landa</owners>
|
<owners>landa</owners>
|
||||||
|
Binary file not shown.
@@ -163,6 +163,7 @@ namespace SqlSugar
|
|||||||
column.OracleSequenceName = sugarColumn.OracleSequenceName;
|
column.OracleSequenceName = sugarColumn.OracleSequenceName;
|
||||||
column.IsOnlyIgnoreInsert = sugarColumn.IsOnlyIgnoreInsert;
|
column.IsOnlyIgnoreInsert = sugarColumn.IsOnlyIgnoreInsert;
|
||||||
column.IsEnableUpdateVersionValidation = sugarColumn.IsEnableUpdateVersionValidation;
|
column.IsEnableUpdateVersionValidation = sugarColumn.IsEnableUpdateVersionValidation;
|
||||||
|
column.IsTranscoding = sugarColumn.IsTranscoding;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@@ -368,6 +368,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
columnInfo.Value = Convert.ToInt64(columnInfo.Value);
|
columnInfo.Value = Convert.ToInt64(columnInfo.Value);
|
||||||
}
|
}
|
||||||
|
var tranColumn=EntityInfo.Columns.FirstOrDefault(it => it.IsTranscoding && it.DbColumnName.Equals(column.DbColumnName, StringComparison.CurrentCultureIgnoreCase));
|
||||||
|
if (tranColumn!=null&&columnInfo.Value.HasValue()) {
|
||||||
|
columnInfo.Value = UtilMethods.EncodeBase64(columnInfo.Value.ToString());
|
||||||
|
}
|
||||||
insertItem.Add(columnInfo);
|
insertItem.Add(columnInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1207,7 +1207,7 @@ namespace SqlSugar
|
|||||||
foreach (var item in list)
|
foreach (var item in list)
|
||||||
{
|
{
|
||||||
var filterResult = item.FilterValue(this.Context);
|
var filterResult = item.FilterValue(this.Context);
|
||||||
Where(filterResult.Sql, filterResult.Parameters);
|
Where(filterResult.Sql+UtilConstants.Space, filterResult.Parameters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1260,6 +1260,19 @@ namespace SqlSugar
|
|||||||
|
|
||||||
protected void _Mapper<TResult>(List<TResult> result)
|
protected void _Mapper<TResult>(List<TResult> result)
|
||||||
{
|
{
|
||||||
|
if (this.EntityInfo.Columns.Any(it => it.IsTranscoding))
|
||||||
|
{
|
||||||
|
foreach (var item in result)
|
||||||
|
{
|
||||||
|
foreach (var column in this.EntityInfo.Columns.Where(it => it.IsTranscoding))
|
||||||
|
{
|
||||||
|
var value = column.PropertyInfo.GetValue(item, null);
|
||||||
|
if (value != null) {
|
||||||
|
column.PropertyInfo.SetValue(item,UtilMethods.DecodeBase64(value.ToString()),null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (this.Mappers.HasValue())
|
if (this.Mappers.HasValue())
|
||||||
{
|
{
|
||||||
foreach (var mapper in this.Mappers)
|
foreach (var mapper in this.Mappers)
|
||||||
|
@@ -131,6 +131,7 @@ namespace SqlSugar
|
|||||||
public ISaveable<T> EnableDiffLogEvent(object businessData = null)
|
public ISaveable<T> EnableDiffLogEvent(object businessData = null)
|
||||||
{
|
{
|
||||||
LoadInsertable();
|
LoadInsertable();
|
||||||
|
LoadUpdateable();
|
||||||
if (this.insertable != null)
|
if (this.insertable != null)
|
||||||
{
|
{
|
||||||
this.insertable.EnableDiffLogEvent(businessData);
|
this.insertable.EnableDiffLogEvent(businessData);
|
||||||
@@ -172,6 +173,15 @@ namespace SqlSugar
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ISaveable<T> UpdateWhereColumns(Expression<Func<T, object>> columns)
|
||||||
|
{
|
||||||
|
LoadUpdateable();
|
||||||
|
if (this.updateable != null)
|
||||||
|
{
|
||||||
|
this.updateable.WhereColumns(columns);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
protected virtual List<string> GetPrimaryKeys()
|
protected virtual List<string> GetPrimaryKeys()
|
||||||
{
|
{
|
||||||
if (this.Context.IsSystemTablesConfig)
|
if (this.Context.IsSystemTablesConfig)
|
||||||
@@ -196,5 +206,6 @@ namespace SqlSugar
|
|||||||
updateable = this.Context.Updateable<T>(temp);
|
updateable = this.Context.Updateable<T>(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -285,7 +285,7 @@ namespace SqlSugar
|
|||||||
foreach (var item in gobalFilterList.Where(it => it.IsJoinQuery == !IsSingle()))
|
foreach (var item in gobalFilterList.Where(it => it.IsJoinQuery == !IsSingle()))
|
||||||
{
|
{
|
||||||
var filterResult = item.FilterValue(this.Context);
|
var filterResult = item.FilterValue(this.Context);
|
||||||
WhereInfos.Add(this.Builder.AppendWhereOrAnd(this.WhereInfos.IsNullOrEmpty(), filterResult.Sql));
|
WhereInfos.Add(this.Builder.AppendWhereOrAnd(this.WhereInfos.IsNullOrEmpty(), filterResult.Sql+UtilConstants.Space));
|
||||||
var filterParamters = this.Context.Ado.GetParameters(filterResult.Parameters);
|
var filterParamters = this.Context.Ado.GetParameters(filterResult.Parameters);
|
||||||
if (filterParamters.HasValue())
|
if (filterParamters.HasValue())
|
||||||
{
|
{
|
||||||
|
@@ -205,6 +205,7 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public IUpdateable<T> UpdateColumns(Expression<Func<T, bool>> columns)
|
public IUpdateable<T> UpdateColumns(Expression<Func<T, bool>> columns)
|
||||||
{
|
{
|
||||||
|
CheckTranscodeing();
|
||||||
var binaryExp = columns.Body as BinaryExpression;
|
var binaryExp = columns.Body as BinaryExpression;
|
||||||
Check.Exception(!binaryExp.NodeType.IsIn(ExpressionType.Equal), "No support {0}", columns.ToString());
|
Check.Exception(!binaryExp.NodeType.IsIn(ExpressionType.Equal), "No support {0}", columns.ToString());
|
||||||
Check.Exception(!(binaryExp.Left is MemberExpression) && !(binaryExp.Left is UnaryExpression), "No support {0}", columns.ToString());
|
Check.Exception(!(binaryExp.Left is MemberExpression) && !(binaryExp.Left is UnaryExpression), "No support {0}", columns.ToString());
|
||||||
@@ -250,6 +251,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => UpdateBuilder.SetValues.Any(v => SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase) || SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey == true).ToList();
|
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => UpdateBuilder.SetValues.Any(v => SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase) || SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey == true).ToList();
|
||||||
|
CheckTranscodeing();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -366,6 +368,13 @@ namespace SqlSugar
|
|||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private void CheckTranscodeing()
|
||||||
|
{
|
||||||
|
if (this.EntityInfo.Columns.Any(it => it.IsTranscoding))
|
||||||
|
{
|
||||||
|
Check.Exception(true, ErrorMessage.GetThrowMessage("UpdateColumns no support IsTranscoding", "UpdateColumns方式更新不支持IsTranscoding,你可以使用db.Updateable(实体)的方式更新"));
|
||||||
|
}
|
||||||
|
}
|
||||||
private void SetUpdateItemByDic(int i, T item, List<DbColumnInfo> updateItem)
|
private void SetUpdateItemByDic(int i, T item, List<DbColumnInfo> updateItem)
|
||||||
{
|
{
|
||||||
foreach (var column in item as Dictionary<string, object>)
|
foreach (var column in item as Dictionary<string, object>)
|
||||||
@@ -403,6 +412,11 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
columnInfo.Value = Convert.ToInt64(columnInfo.Value);
|
columnInfo.Value = Convert.ToInt64(columnInfo.Value);
|
||||||
}
|
}
|
||||||
|
var tranColumn = EntityInfo.Columns.FirstOrDefault(it => it.IsTranscoding && it.DbColumnName.Equals(column.DbColumnName, StringComparison.CurrentCultureIgnoreCase));
|
||||||
|
if (tranColumn != null && columnInfo.Value.HasValue())
|
||||||
|
{
|
||||||
|
columnInfo.Value = UtilMethods.EncodeBase64(columnInfo.Value.ToString());
|
||||||
|
}
|
||||||
updateItem.Add(columnInfo);
|
updateItem.Add(columnInfo);
|
||||||
}
|
}
|
||||||
this.UpdateBuilder.DbColumnInfoList.AddRange(updateItem);
|
this.UpdateBuilder.DbColumnInfoList.AddRange(updateItem);
|
||||||
|
@@ -27,5 +27,6 @@ namespace SqlSugar
|
|||||||
public int DecimalDigits { get; set; }
|
public int DecimalDigits { get; set; }
|
||||||
public string OracleSequenceName { get; set; }
|
public string OracleSequenceName { get; set; }
|
||||||
public bool IsOnlyIgnoreInsert { get; set; }
|
public bool IsOnlyIgnoreInsert { get; set; }
|
||||||
|
public bool IsTranscoding { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -120,6 +120,14 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private bool _IsTranscoding;
|
||||||
|
public bool IsTranscoding
|
||||||
|
{
|
||||||
|
get { return _IsTranscoding; }
|
||||||
|
set { _IsTranscoding = value; }
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -15,6 +15,7 @@ namespace SqlSugar
|
|||||||
ISaveable<T> InsertIgnoreColumns(Expression<Func<T, object>> columns);
|
ISaveable<T> InsertIgnoreColumns(Expression<Func<T, object>> columns);
|
||||||
ISaveable<T> UpdateColumns(Expression<Func<T, object>> columns);
|
ISaveable<T> UpdateColumns(Expression<Func<T, object>> columns);
|
||||||
ISaveable<T> UpdateIgnoreColumns(Expression<Func<T, object>> columns);
|
ISaveable<T> UpdateIgnoreColumns(Expression<Func<T, object>> columns);
|
||||||
|
ISaveable<T> UpdateWhereColumns(Expression<Func<T, object>> columns);
|
||||||
ISaveable<T> EnableDiffLogEvent(object businessData = null);
|
ISaveable<T> EnableDiffLogEvent(object businessData = null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>netstandard2.0</TargetFramework>
|
||||||
<Version>4.9.9.5</Version>
|
<Version>4.9.9.6</Version>
|
||||||
<Copyright>sun_kai_xuan</Copyright>
|
<Copyright>sun_kai_xuan</Copyright>
|
||||||
<PackageProjectUrl>https://github.com/sunkaixuan/SqlSugar</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/sunkaixuan/SqlSugar</PackageProjectUrl>
|
||||||
<PackageLicenseUrl></PackageLicenseUrl>
|
<PackageLicenseUrl></PackageLicenseUrl>
|
||||||
|
@@ -788,6 +788,22 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
this.Queues.Add(sql,this.Context.Ado.GetParameters(parsmeters));
|
this.Queues.Add(sql,this.Context.Ado.GetParameters(parsmeters));
|
||||||
}
|
}
|
||||||
|
public void AddQueue(string sql, SugarParameter parsmeter)
|
||||||
|
{
|
||||||
|
if (Queues == null)
|
||||||
|
{
|
||||||
|
Queues = new QueueList();
|
||||||
|
}
|
||||||
|
this.Queues.Add(sql, new List<SugarParameter>() { parsmeter });
|
||||||
|
}
|
||||||
|
public void AddQueue(string sql, List<SugarParameter> parsmeters)
|
||||||
|
{
|
||||||
|
if (Queues == null)
|
||||||
|
{
|
||||||
|
Queues = new QueueList();
|
||||||
|
}
|
||||||
|
this.Queues.Add(sql, parsmeters);
|
||||||
|
}
|
||||||
public QueueList Queues = new QueueList();
|
public QueueList Queues = new QueueList();
|
||||||
|
|
||||||
private T SaveQueuesProvider<T>(bool isTran, Func<string, List<SugarParameter>, T> func)
|
private T SaveQueuesProvider<T>(bool isTran, Func<string, List<SugarParameter>, T> func)
|
||||||
@@ -812,14 +828,17 @@ namespace SqlSugar
|
|||||||
if (item.Parameters == null)
|
if (item.Parameters == null)
|
||||||
item.Parameters = new SugarParameter[] { };
|
item.Parameters = new SugarParameter[] { };
|
||||||
var itemParsmeters = item.Parameters.OrderByDescending(it => it.ParameterName.Length).ToList();
|
var itemParsmeters = item.Parameters.OrderByDescending(it => it.ParameterName.Length).ToList();
|
||||||
|
List<SugarParameter> addParameters = new List<SugarParameter>();
|
||||||
var itemSql = item.Sql;
|
var itemSql = item.Sql;
|
||||||
foreach (var itemParameter in itemParsmeters)
|
foreach (var itemParameter in itemParsmeters)
|
||||||
{
|
{
|
||||||
var newName = itemParameter.ParameterName + "_q_" + index;
|
var newName = itemParameter.ParameterName + "_q_" + index;
|
||||||
|
SugarParameter parameter = new SugarParameter(newName, itemParameter.Value);
|
||||||
|
parameter.DbType = itemParameter.DbType;
|
||||||
itemSql = itemSql.Replace(itemParameter.ParameterName, newName);
|
itemSql = itemSql.Replace(itemParameter.ParameterName, newName);
|
||||||
itemParameter.ParameterName = newName;
|
addParameters.Add(parameter);
|
||||||
}
|
}
|
||||||
parsmeters.AddRange(itemParsmeters);
|
parsmeters.AddRange(addParameters);
|
||||||
itemSql = itemSql.TrimEnd(';')+";";
|
itemSql = itemSql.TrimEnd(';')+";";
|
||||||
sqlBuilder.AppendLine(itemSql);
|
sqlBuilder.AppendLine(itemSql);
|
||||||
index++;
|
index++;
|
||||||
|
@@ -130,5 +130,44 @@ namespace SqlSugar
|
|||||||
return byte2String;
|
return byte2String;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string EncodeBase64(string code)
|
||||||
|
{
|
||||||
|
if (code.IsNullOrEmpty()) return code;
|
||||||
|
string encode = "";
|
||||||
|
byte[] bytes = Encoding.GetEncoding("utf-8").GetBytes(code);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
encode = Convert.ToBase64String(bytes);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
encode = code;
|
||||||
|
}
|
||||||
|
return encode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string DecodeBase64(string code)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (code.IsNullOrEmpty()) return code;
|
||||||
|
string decode = "";
|
||||||
|
byte[] bytes = Convert.FromBase64String(code);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
decode = Encoding.GetEncoding("utf-8").GetString(bytes);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
decode = code;
|
||||||
|
}
|
||||||
|
return decode;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user