Update ConfigQuery

This commit is contained in:
sunkaixuan 2022-05-22 14:55:56 +08:00
parent 4cb5bfa326
commit c990d44d64

View File

@ -11,33 +11,36 @@ namespace SqlSugar
public SqlSugarProvider Context { get; set; } public SqlSugarProvider Context { get; set; }
public void SetTable<T>(Expression<Func<T, object>> keyExpression, Expression<Func<T, object>> valueTextExpression, string uniqueCode = null, Expression<Func<T, object>> whereExpression=null) public void SetTable<T>(Expression<Func<T, object>> keyExpression, Expression<Func<T, object>> valueTextExpression, string uniqueCode = null, Expression<Func<T, object>> whereExpression=null)
{ {
var entity = this.Context.EntityMaintenance.GetEntityInfo<T>(); lock (SqlFuncExtendsion.TableInfos)
ExpressionContext context = new ExpressionContext();
var query = Context.Queryable<T>().QueryBuilder;
var keyValue= query.GetExpressionValue(keyExpression, ResolveExpressType.FieldSingle).GetString();
var ValueValue = query.GetExpressionValue(valueTextExpression, ResolveExpressType.FieldSingle).GetString();
string where = null;
if (whereExpression != null)
{ {
where=query.GetExpressionValue(whereExpression, ResolveExpressType.WhereSingle).GetResultString(); var entity = this.Context.EntityMaintenance.GetEntityInfo<T>();
} ExpressionContext context = new ExpressionContext();
context.MappingTables = this.Context.MappingTables; var query = Context.Queryable<T>().QueryBuilder;
if (!SqlFuncExtendsion.TableInfos.Any(y => y.Type == typeof(T) && y.Code == uniqueCode)) var keyValue = query.GetExpressionValue(keyExpression, ResolveExpressType.FieldSingle).GetString();
{ var ValueValue = query.GetExpressionValue(valueTextExpression, ResolveExpressType.FieldSingle).GetString();
SqlFuncExtendsion.TableInfos.Add(new ConfigTableInfo() string where = null;
if (whereExpression != null)
{ {
Type = typeof(T), where = query.GetExpressionValue(whereExpression, ResolveExpressType.WhereSingle).GetResultString();
TableName = entity.DbTableName, }
Key = keyValue, context.MappingTables = this.Context.MappingTables;
Value = ValueValue, if (!SqlFuncExtendsion.TableInfos.Any(y => y.Type == typeof(T) && y.Code == uniqueCode))
Where = where, {
Parameter = query.Parameters, SqlFuncExtendsion.TableInfos.Add(new ConfigTableInfo()
Code = uniqueCode {
}); Type = typeof(T),
} TableName = entity.DbTableName,
else Key = keyValue,
{ Value = ValueValue,
Check.Exception(true, "SetKeyValue error , entity & uniqueCode already exist"); Where = where,
Parameter = query.Parameters,
Code = uniqueCode
});
}
else
{
Check.Exception(true, "SetKeyValue error , entity & uniqueCode already exist");
}
} }
} }
public void SetTable<T>(Expression<Func<T, object>> key, Expression<Func<T, object>> value) public void SetTable<T>(Expression<Func<T, object>> key, Expression<Func<T, object>> value)