Update core

This commit is contained in:
sunkaixuan
2019-04-10 08:25:16 +08:00
parent f981f49fa0
commit 96a89c3c58
14 changed files with 117 additions and 6 deletions

View File

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

View File

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

View File

@@ -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);
} }
} }

View File

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

View File

@@ -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);
} }
} }
} }

View File

@@ -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())
{ {

View File

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

View File

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

View File

@@ -120,6 +120,14 @@ namespace SqlSugar
} }
private bool _IsTranscoding;
public bool IsTranscoding
{
get { return _IsTranscoding; }
set { _IsTranscoding = value; }
}
} }
} }

View File

@@ -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);
} }
} }

View File

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

View File

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

View File

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