UpdateNav many to many filter

This commit is contained in:
sunkaixuan
2023-12-06 17:19:06 +08:00
parent dc9044e23f
commit 112bcec3a8
4 changed files with 23 additions and 0 deletions

View File

@@ -405,6 +405,18 @@ namespace SqlSugar
}
return this;
}
public IDeleteable<T> EnableQueryFilter(Type type)
{
var queryable = this.Context.Queryable<T>().Filter(type);
queryable.QueryBuilder.LambdaExpressions.ParameterIndex = 1000;
var sqlable = queryable.ToSql();
var whereInfos = Regex.Split(sqlable.Key, " Where ", RegexOptions.IgnoreCase);
if (whereInfos.Length > 1)
{
this.Where(whereInfos.Last(), sqlable.Value);
}
return this;
}
public SplitTableDeleteProvider<T> SplitTable(Func<List<SplitTableInfo>, IEnumerable<SplitTableInfo>> getTableNamesFunc)
{
UtilMethods.StartCustomSplitTable(this.Context, typeof(T));

View File

@@ -111,6 +111,10 @@ namespace SqlSugar
.SetColumns(locgicColumn.DbColumnName, true)
.ExecuteCommand();
}
else if (_Context?.CurrentConnectionConfig?.MoreSettings?.IsAutoDeleteQueryFilter == true)
{
this._Context.Deleteable<object>().AS(mappingEntity.DbTableName).In(mappingA.DbColumnName, ids).EnableQueryFilter(mappingEntity.Type).ExecuteCommand();
}
else
{
this._Context.Deleteable<object>().AS(mappingEntity.DbTableName).In(mappingA.DbColumnName, ids).ExecuteCommand();

View File

@@ -251,6 +251,12 @@ namespace SqlSugar
var reslt = method.Invoke(QueryableObj, new object[] { });
return (string)reslt;
}
public KeyValuePair<string, List<SugarParameter>> ToSql()
{
var method = QueryableObj.GetType().GetMyMethod("ToSql", 0);
var reslt = method.Invoke(QueryableObj, new object[] { });
return (KeyValuePair<string, List<SugarParameter>>)reslt;
}
public object InSingle(object pkValue)
{
var method = QueryableObj.GetType().GetMyMethod("InSingle", 1);

View File

@@ -48,6 +48,7 @@ namespace SqlSugar
KeyValuePair<string, List<SugarParameter>> ToSql();
string ToSqlString();
IDeleteable<T> EnableQueryFilter();
IDeleteable<T> EnableQueryFilter(Type type);
SplitTableDeleteProvider<T> SplitTable(Func<List<SplitTableInfo>, IEnumerable<SplitTableInfo>> getTableNamesFunc);
SplitTableDeleteByObjectProvider<T> SplitTable();
LogicDeleteProvider<T> IsLogic();