Synchronization code

This commit is contained in:
sunkaixuan 2024-05-21 22:00:46 +08:00
parent ed1baaf952
commit 69eae2efd7
4 changed files with 26 additions and 1 deletions

View File

@ -38,6 +38,7 @@ namespace SqlSugar
}
public int SubQueryIndex { get; set; }
public int JoinIndex { get; set; }
public bool IsAsAttr { get; set; }
public int Index { get; set; }
public int ParameterIndex { get; set; }
public string SingleTableNameSubqueryShortName{ get; set; }

View File

@ -51,6 +51,13 @@ namespace SqlSugar
}
this.Context.RefreshMapping();
var tableName= Context.GetTranslationTableName(parameter.Type.Name, true);
if (this.Context.IsAsAttr == true)
{
var db = this.Context.SugarContext.Context;
var entityInfo = db.EntityMaintenance.GetEntityInfo(parameter.Type);
var queryable = ((QueryableProvider<object>)(db.Queryable<object>()));
tableName = queryable.GetTableName(entityInfo, tableName);
}
if (exp.Arguments.Count == 2 && exp.Arguments.Last().HasValue())
{
tableName = Context.GetTranslationTableName(ExpressionTool.DynamicInvoke(exp.Arguments.Last()) + "");

View File

@ -51,6 +51,13 @@ namespace SqlSugar
}
this.Context.RefreshMapping();
var tableName= Context.GetTranslationTableName(parameter.Type.Name, true);
if (this.Context.IsAsAttr == true)
{
var db = this.Context.SugarContext.Context;
var entityInfo = db.EntityMaintenance.GetEntityInfo(parameter.Type);
var queryable = ((QueryableProvider<object>)(db.Queryable<object>()));
tableName = queryable.GetTableName(entityInfo, tableName);
}
if (exp.Arguments.Count == 2 && exp.Arguments.Last().HasValue())
{
tableName=Context.GetTranslationTableName(ExpressionTool.DynamicInvoke(exp.Arguments.Last())+"");

View File

@ -20,6 +20,7 @@ namespace SqlSugar
private string subKey = "$SubAs:";
private bool hasWhere;
private bool isXmlPath = false;
private bool isAsAttr = false;
public SubResolve(MethodCallExpression expression, ExpressionContext context, Expression oppsiteExpression)
{
this.context = context;
@ -234,6 +235,10 @@ namespace SqlSugar
{
isXmlPath = true;
}
else if (item is SubAsWithAttr)
{
isAsAttr = true;
}
item.Context = this.context;
item.Expression = exp;
@ -269,12 +274,17 @@ namespace SqlSugar
{
this.context.JoinIndex++;
}
if (isAsAttr)
{
this.context.IsAsAttr = true;
}
List<string> result = isubList.Select(it =>
{
it.HasWhere = isHasWhere;
return it.GetValue(it.Expression);
}).ToList();
this.context.JoinIndex = 0;
this.context.IsAsAttr = false;
return result;
}