SetColumns Json bug

This commit is contained in:
sunkaixuna
2021-11-03 00:22:36 +08:00
parent fa8da9b1b9
commit 9d79237a61
3 changed files with 25 additions and 2 deletions

View File

@@ -21,6 +21,11 @@ namespace OrmTest
list= Db.Queryable<UnitJsonTest>().ToList(); list= Db.Queryable<UnitJsonTest>().ToList();
UValidate.Check("order2", list.First().Order.Name, "Json"); UValidate.Check("order2", list.First().Order.Name, "Json");
var list2 = Db.Queryable<UnitJsonTest>().ToList(); var list2 = Db.Queryable<UnitJsonTest>().ToList();
var x = new Order() { Name="a" };
Db.Updateable<UnitJsonTest2>()
.SetColumns(it => it.Name=="a")
.Where(it=>it.Id==1)
.ExecuteCommand();
} }
} }
@@ -30,6 +35,8 @@ namespace OrmTest
public int Id { get; set; } public int Id { get; set; }
[SqlSugar.SugarColumn(IsJson = true)] [SqlSugar.SugarColumn(IsJson = true)]
public Order Order { get; set; } public Order Order { get; set; }
[SqlSugar.SugarColumn(IsNullable =true)]
public string Name { get; set; }
} }
public class UnitJsonTest public class UnitJsonTest
{ {

View File

@@ -316,7 +316,7 @@ namespace SqlSugar
public IUpdateable<T> SetColumns(Expression<Func<T, bool>> columns) public IUpdateable<T> SetColumns(Expression<Func<T, bool>> columns)
{ {
ThrowUpdateByObject(); ThrowUpdateByObject();
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());
@@ -327,6 +327,12 @@ namespace SqlSugar
expResult = Regex.Split(expResult, " IS NULL ")[0]+" = NULL "; expResult = Regex.Split(expResult, " IS NULL ")[0]+" = NULL ";
} }
string key = SqlBuilder.GetNoTranslationColumnName(expResult); string key = SqlBuilder.GetNoTranslationColumnName(expResult);
if (EntityInfo.Columns.Where(it=>it.IsJson||it.IsTranscoding).Any(it => it.DbColumnName.EqualCase(key) || it.PropertyName.EqualCase(key)))
{
CheckTranscodeing();
}
UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(SqlBuilder.GetTranslationColumnName(key), expResult)); UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(SqlBuilder.GetTranslationColumnName(key), expResult));
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => (UpdateParameterIsNull == false && IsPrimaryKey(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 => (UpdateParameterIsNull == false && IsPrimaryKey(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();
AppendSets(); AppendSets();

View File

@@ -55,7 +55,17 @@ namespace SqlSugar
} }
return errorValue; return errorValue;
} }
public static bool EqualCase(this string thisValue,string equalValue)
{
if ( thisValue!=null && equalValue != null)
{
return thisValue.ToLower() == equalValue.ToLower();
}
else
{
return thisValue == equalValue;
}
}
public static string ObjToString(this object thisValue) public static string ObjToString(this object thisValue)
{ {
if (thisValue != null) return thisValue.ToString().Trim(); if (thisValue != null) return thisValue.ToString().Trim();