Synchronization code

This commit is contained in:
sunkaixuan 2023-12-22 18:11:04 +08:00
parent 2c6c405b33
commit 444e5768c6
3 changed files with 28 additions and 3 deletions

View File

@ -320,7 +320,14 @@ namespace SqlSugar
{
if (entityInfo.Type.GetCustomAttribute<SplitTableAttribute>() != null)
{
item.IndexName = item.IndexName + entityInfo.DbTableName;
if (item.IndexName?.Contains("{split_table}") == true)
{
item.IndexName = item.IndexName.Replace("{split_table}", entityInfo.DbTableName);
}
else
{
item.IndexName = item.IndexName + entityInfo.DbTableName;
}
}
if (this.Context.CurrentConnectionConfig.IndexSuffix.HasValue())
{

View File

@ -270,7 +270,7 @@ namespace SqlSugar
private void ResolveMemberValue(ExpressionParameter parameter, ExpressionParameter baseParameter, MemberExpression expression, bool? isLeft, bool isSetTempData)
{
var nav = new OneToOneNavgateExpression(this.Context?.SugarContext?.Context);
var nav = new OneToOneNavgateExpression(this.Context?.SugarContext?.Context,this);
nav.ExpContext = this.Context;
var navN = new OneToOneNavgateExpressionN(this.Context?.SugarContext?.Context);
if (nav.IsNavgate(expression))

View File

@ -17,9 +17,11 @@ namespace SqlSugar
private Navigate Navigat;
public string ShorName;
internal string MemberName;
public OneToOneNavgateExpression(SqlSugarProvider context)
private MemberExpressionResolve _memberExpressionResolve;
public OneToOneNavgateExpression(SqlSugarProvider context, MemberExpressionResolve memberExpressionResolve)
{
this.context = context;
_memberExpressionResolve= memberExpressionResolve;
}
internal bool IsNavgate(Expression expression)
@ -110,8 +112,24 @@ namespace SqlSugar
(queryable.QueryBuilder.Builder.GetTranslationColumnName(dbName), queryable.QueryBuilder.Builder.GetTranslationColumnName(tableName));
}
}
Type[] clearTypes = null;
var isClearFilter = false;
if (this._memberExpressionResolve?.Context?.SugarContext?.QueryBuilder != null)
{
queryable.QueryBuilder.LambdaExpressions.ParameterIndex = 500 + this._memberExpressionResolve.Context.SugarContext.QueryBuilder.LambdaExpressions.ParameterIndex;
this._memberExpressionResolve.Context.SugarContext.QueryBuilder.LambdaExpressions.ParameterIndex++;
isClearFilter = this._memberExpressionResolve.Context.SugarContext.QueryBuilder.IsDisabledGobalFilter;
clearTypes = this._memberExpressionResolve.Context.SugarContext.QueryBuilder.RemoveFilters;
}
var type = this.ProPertyEntity.Columns.Count(it => it.IsPrimarykey) > 1 ? this.ProPertyEntity.Type : null;
if (isClearFilter)
{
type = null;
}
mapper.Sql = queryable
.AS(tableName)
.ClearFilter(clearTypes)
.Filter(type)
.WhereIF(Navigat.WhereSql.HasValue(),Navigat.WhereSql)
.Where($" {queryable.SqlBuilder.GetTranslationColumnName(ShorName)}.{name}={pk} ").Select(selectName).ToSql().Key;
mapper.Sql = $" ({mapper.Sql}) ";