mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-25 10:08:11 +08:00
Mysql Updateable IsJson Enhance
This commit is contained in:
parent
a7f5b2f3f0
commit
e1ba061baa
@ -19,6 +19,11 @@ namespace OrmTest
|
||||
Db.Updateable(new UnitJsonTest() { Id = 1, Order = new Order { Id = 2, Name = "order2" } }).ExecuteCommand();
|
||||
list = Db.Queryable<UnitJsonTest>().ToList();
|
||||
UValidate.Check("order2", list.First().Order.Name, "Json");
|
||||
|
||||
Db.Updateable<UnitJsonTest>().SetColumns(x => new UnitJsonTest { Order = new Order { Id = 2, Name = "order3" } }).Where(x => x.Id == 1).ExecuteCommand();
|
||||
list = Db.Queryable<UnitJsonTest>().ToList();
|
||||
UValidate.Check("order3", list.First().Order.Name, "Json");
|
||||
|
||||
var list2 = Db.Queryable<UnitJsonTest>().ToList();
|
||||
}
|
||||
}
|
||||
|
@ -235,7 +235,7 @@ namespace SqlSugar
|
||||
}
|
||||
}
|
||||
this.UpdateBuilder.DbColumnInfoList = 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();
|
||||
CheckTranscodeing();
|
||||
CheckTranscodeing(false);
|
||||
AppendSets();
|
||||
return this;
|
||||
}
|
||||
@ -438,13 +438,13 @@ namespace SqlSugar
|
||||
++i;
|
||||
}
|
||||
}
|
||||
private void CheckTranscodeing()
|
||||
private void CheckTranscodeing(bool checkIsJson = true)
|
||||
{
|
||||
if (this.EntityInfo.Columns.Any(it => it.IsTranscoding))
|
||||
{
|
||||
Check.Exception(true, ErrorMessage.GetThrowMessage("UpdateColumns no support IsTranscoding", "SetColumns方式更新不支持IsTranscoding,你可以使用db.Updateable(实体)的方式更新"));
|
||||
}
|
||||
if (this.EntityInfo.Columns.Any(it => it.IsJson))
|
||||
if (checkIsJson && this.EntityInfo.Columns.Any(it => it.IsJson))
|
||||
{
|
||||
Check.Exception(true, ErrorMessage.GetThrowMessage("UpdateColumns no support IsJson", "SetColumns方式更新不支持IsJson,你可以使用db.Updateable(实体)的方式更新"));
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
@ -51,6 +52,22 @@ namespace SqlSugar
|
||||
var type = expression.Type;
|
||||
var memberName = this.Context.GetDbColumnName(type.Name, memberAssignment.Member.Name);
|
||||
var item = memberAssignment.Expression;
|
||||
|
||||
//Column IsJson Handler
|
||||
if (memberAssignment.Member.CustomAttributes != null)
|
||||
{
|
||||
var customAttribute = memberAssignment.Member.GetCustomAttribute<SugarColumn>();
|
||||
|
||||
if (customAttribute?.IsJson ?? false)
|
||||
{
|
||||
var paramterValue = ExpressionTool.DynamicInvoke(item);
|
||||
var parameterName = AppendParameter(JsonConvert.SerializeObject(paramterValue));
|
||||
this.Context.Result.Append(base.Context.GetEqString(memberName, parameterName));
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if ((item is MemberExpression) && ((MemberExpression)item).Expression == null)
|
||||
{
|
||||
var paramterValue = ExpressionTool.DynamicInvoke(item);
|
||||
|
Loading…
Reference in New Issue
Block a user