mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 20:38:16 +08:00
- 增加 WithTempQuery + FromQuery 嵌套查询功能;#1192
This commit is contained in:
@ -25,6 +25,7 @@ namespace FreeSql.Internal
|
||||
public ParameterExpression _lambdaParameter;
|
||||
public ReadAnonymousTypeInfo _map;
|
||||
public string _field;
|
||||
public ReadAnonymousTypeInfo ParseExpMapResult { get; protected set; }
|
||||
public abstract string ParseExp(Expression[] members);
|
||||
}
|
||||
|
||||
@ -50,6 +51,23 @@ namespace FreeSql.Internal
|
||||
public bool ReadAnonymousField(List<SelectTableInfo> _tables, Func<Type, string, string> _tableRule, StringBuilder field, ReadAnonymousTypeInfo parent, ref int index, Expression exp, Select0Provider select,
|
||||
BaseDiyMemberExpression diymemexp, List<GlobalFilter.Item> whereGlobalFilter, List<string> findIncludeMany, List<Expression> findSubSelectMany, bool isAllDtoMap)
|
||||
{
|
||||
void LocalSetFieldAlias(ref int localIndex)
|
||||
{
|
||||
if (localIndex >= 0)
|
||||
{
|
||||
parent.DbNestedField = $"as{++localIndex}";
|
||||
field.Append(_common.FieldAsAlias(parent.DbNestedField));
|
||||
}
|
||||
else if (diymemexp?.ParseExpMapResult != null)
|
||||
parent.DbNestedField = diymemexp.ParseExpMapResult.DbNestedField;
|
||||
else if (string.IsNullOrEmpty(parent.CsName) == false)
|
||||
{
|
||||
parent.DbNestedField = GetFieldAsCsName(parent.CsName);
|
||||
if (localIndex == ReadAnonymousFieldAsCsName && parent.DbField.EndsWith(parent.DbNestedField, StringComparison.CurrentCultureIgnoreCase) == false) //DbField 和 CsName 相同的时候,不处理
|
||||
field.Append(_common.FieldAsAlias(parent.DbNestedField));
|
||||
}
|
||||
}
|
||||
|
||||
Func<ExpTSC> getTSC = () => new ExpTSC { _tables = _tables, _tableRule = _tableRule, diymemexp = diymemexp, tbtype = SelectTableInfoType.From, isQuoteName = true, isDisableDiyParse = false, style = ExpressionStyle.Where, whereGlobalFilter = whereGlobalFilter, dbParams = select?._params }; //#462 添加 DbParams 解决
|
||||
switch (exp.NodeType)
|
||||
{
|
||||
@ -59,8 +77,7 @@ namespace FreeSql.Internal
|
||||
case ExpressionType.NegateChecked:
|
||||
parent.DbField = $"-({ExpressionLambdaToSql((exp as UnaryExpression)?.Operand, getTSC())})";
|
||||
field.Append(", ").Append(parent.DbField);
|
||||
if (index >= 0) field.Append(_common.FieldAsAlias($"as{++index}"));
|
||||
else if (index == ReadAnonymousFieldAsCsName && string.IsNullOrEmpty(parent.CsName) == false) field.Append(_common.FieldAsAlias(GetFieldAsCsName(parent.CsName)));
|
||||
LocalSetFieldAlias(ref index);
|
||||
if (parent.CsType == null && exp.Type.IsValueType) parent.CsType = exp.Type;
|
||||
return false;
|
||||
case ExpressionType.Convert: return ReadAnonymousField(_tables, _tableRule, field, parent, ref index, (exp as UnaryExpression)?.Operand, select, diymemexp, whereGlobalFilter, findIncludeMany, findSubSelectMany, isAllDtoMap);
|
||||
@ -79,8 +96,7 @@ namespace FreeSql.Internal
|
||||
else
|
||||
parent.DbField = _common.FormatSql("{0}", constExp?.Value);
|
||||
field.Append(", ").Append(parent.DbField);
|
||||
if (index >= 0) field.Append(_common.FieldAsAlias($"as{++index}"));
|
||||
else if (index == ReadAnonymousFieldAsCsName && string.IsNullOrEmpty(parent.CsName) == false) field.Append(_common.FieldAsAlias(GetFieldAsCsName(parent.CsName)));
|
||||
LocalSetFieldAlias(ref index);
|
||||
if (parent.CsType == null && exp.Type.IsValueType) parent.CsType = exp.Type;
|
||||
return false;
|
||||
case ExpressionType.Conditional:
|
||||
@ -109,13 +125,12 @@ namespace FreeSql.Internal
|
||||
else
|
||||
parent.DbField = ExpressionLambdaToSql(exp, getTSC());
|
||||
field.Append(", ").Append(parent.DbField);
|
||||
if (index >= 0) field.Append(_common.FieldAsAlias($"as{++index}"));
|
||||
else if (index == ReadAnonymousFieldAsCsName && string.IsNullOrEmpty(parent.CsName) == false) field.Append(_common.FieldAsAlias(GetFieldAsCsName(parent.CsName)));
|
||||
LocalSetFieldAlias(ref index);
|
||||
if (parent.CsType == null && exp.Type.IsValueType) parent.CsType = exp.Type;
|
||||
return false;
|
||||
case ExpressionType.Parameter:
|
||||
case ExpressionType.MemberAccess:
|
||||
if (_common.GetTableByEntity(exp.Type) != null &&
|
||||
if ((_common.GetTableByEntity(exp.Type) != null || exp.Type.IsAnonymousType() && diymemexp != null) &&
|
||||
//判断 [JsonMap] 并非导航对象
|
||||
(exp.NodeType == ExpressionType.Parameter || exp is MemberExpression expMem && (
|
||||
_common.GetTableByEntity(expMem.Expression.Type)?.ColumnsByCs.ContainsKey(expMem.Member.Name) == false ||
|
||||
@ -126,6 +141,28 @@ namespace FreeSql.Internal
|
||||
//加载表所有字段
|
||||
var map = new List<SelectColumnInfo>();
|
||||
ExpressionSelectColumn_MemberAccess(_tables, _tableRule, map, SelectTableInfoType.From, exp, true, diymemexp);
|
||||
if (map.Any() == false)
|
||||
{
|
||||
if (diymemexp != null && diymemexp.ParseExpMapResult != null)
|
||||
{
|
||||
var withTempQueryParser = diymemexp as Select0Provider.WithTempQueryParser;
|
||||
diymemexp.ParseExpMapResult.CopyTo(parent);
|
||||
foreach (var child in parent.GetAllChilds())
|
||||
{
|
||||
if (withTempQueryParser != null)
|
||||
field.Append(", ").Append(withTempQueryParser.ParseExpMatchedTable.Alias).Append(".").Append(child.DbNestedField);
|
||||
else
|
||||
field.Append(", ").Append(child.DbField);
|
||||
if (index >= 0)
|
||||
{
|
||||
child.DbNestedField = $"as{++index}";
|
||||
field.Append(_common.FieldAsAlias(child.DbNestedField));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
throw new Exception($"未能加载它的所有成员,不支持解析表达式树 {exp}");
|
||||
}
|
||||
var tb = parent.Table = map.First().Table.Table;
|
||||
parent.CsType = tb.Type;
|
||||
parent.Consturctor = tb.Type.InternalGetTypeConstructor0OrFirst();
|
||||
@ -137,14 +174,19 @@ namespace FreeSql.Internal
|
||||
Property = tb.Properties.TryGetValue(map[idx].Column.CsName, out var tryprop) ? tryprop : tb.Type.GetProperty(map[idx].Column.CsName, BindingFlags.Public | BindingFlags.Instance),
|
||||
CsName = map[idx].Column.CsName,
|
||||
DbField = $"{map[idx].Table.Alias}.{_common.QuoteSqlName(map[idx].Column.Attribute.Name)}",
|
||||
DbNestedField = _common.QuoteSqlName(map[idx].Column.Attribute.Name),
|
||||
CsType = map[idx].Column.CsType,
|
||||
MapType = map[idx].Column.Attribute.MapType
|
||||
};
|
||||
field.Append(", ").Append(_common.RereadColumn(map[idx].Column, child.DbField));
|
||||
if (index >= 0) field.Append(_common.FieldAsAlias($"as{++index}"));
|
||||
if (index >= 0)
|
||||
{
|
||||
child.DbNestedField = $"as{++index}";
|
||||
field.Append(_common.FieldAsAlias(child.DbNestedField));
|
||||
}
|
||||
parent.Childs.Add(child);
|
||||
}
|
||||
if (_tables.Count > 1)
|
||||
if (_tables?.Count > 1)
|
||||
{ //如果下级导航属性被 Include 过,则将他们也查询出来
|
||||
foreach (var memProp in tb.Properties.Values)
|
||||
{
|
||||
@ -199,15 +241,19 @@ namespace FreeSql.Internal
|
||||
}
|
||||
if (diymemexp != null && exp is MemberExpression expMem2 && expMem2.Member.Name == "Key" && expMem2.Expression.Type.FullName.StartsWith("FreeSql.ISelectGroupingAggregate`"))
|
||||
{
|
||||
field.Append(diymemexp._field);
|
||||
field.Append(diymemexp._field);
|
||||
if (diymemexp._map.Childs.Any() == false) //处理 GroupBy(a => a.Title) ToSql(g => new { tit = a.Key }, FieldAliasOptions.AsProperty) 问题
|
||||
{
|
||||
if (index >= 0) field.Append(_common.FieldAsAlias($"as{++index}"));
|
||||
else if (index == ReadAnonymousFieldAsCsName)
|
||||
if (index >= 0)
|
||||
{
|
||||
var csname = GetFieldAsCsName(parent.CsName);
|
||||
if (diymemexp._field.EndsWith(csname, StringComparison.CurrentCultureIgnoreCase) == false) //DbField 和 CsName 相同的时候,不处理
|
||||
field.Append(_common.FieldAsAlias(csname));
|
||||
parent.DbNestedField = $"as{++index}";
|
||||
field.Append(_common.FieldAsAlias(parent.DbNestedField));
|
||||
}
|
||||
else if (string.IsNullOrEmpty(parent.CsName) == false)
|
||||
{
|
||||
parent.DbNestedField = GetFieldAsCsName(parent.CsName);
|
||||
if (index == ReadAnonymousFieldAsCsName && diymemexp._field.EndsWith(parent.DbNestedField, StringComparison.CurrentCultureIgnoreCase) == false) //DbField 和 CsName 相同的时候,不处理
|
||||
field.Append(_common.FieldAsAlias(parent.DbNestedField));
|
||||
}
|
||||
}
|
||||
var parentProp = parent.Property;
|
||||
@ -217,20 +263,14 @@ namespace FreeSql.Internal
|
||||
}
|
||||
if (parent.CsType == null) parent.CsType = exp.Type;
|
||||
var pdbfield = parent.DbField = ExpressionLambdaToSql(exp, getTSC());
|
||||
if (parent.MapType == null || _tables?.Any(a => a.Table.IsRereadSql) == true)
|
||||
if (parent.MapType == null || _tables?.Any(a => a.Table?.IsRereadSql == true) == true)
|
||||
{
|
||||
var findcol = SearchColumnByField(_tables, null, parent.DbField);
|
||||
if (parent.MapType == null) parent.MapType = findcol?.Attribute.MapType ?? exp.Type;
|
||||
if (findcol != null) pdbfield = _common.RereadColumn(findcol, pdbfield);
|
||||
}
|
||||
field.Append(", ").Append(pdbfield);
|
||||
if (index >= 0) field.Append(_common.FieldAsAlias($"as{++index}"));
|
||||
else if (index == ReadAnonymousFieldAsCsName && string.IsNullOrEmpty(parent.CsName) == false)
|
||||
{
|
||||
var csname = GetFieldAsCsName(parent.CsName);
|
||||
if (parent.DbField.EndsWith(csname, StringComparison.CurrentCultureIgnoreCase) == false) //DbField 和 CsName 相同的时候,不处理
|
||||
field.Append(_common.FieldAsAlias(csname));
|
||||
}
|
||||
LocalSetFieldAlias(ref index);
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
@ -263,7 +303,34 @@ namespace FreeSql.Internal
|
||||
{
|
||||
foreach (var dtTb in _tables)
|
||||
{
|
||||
if (dtTb.Table.ColumnsByCs.TryGetValue(dtoProp.Name, out var trydtocol) == false) continue;
|
||||
if (dtTb.Table.ColumnsByCs.TryGetValue(dtoProp.Name, out var trydtocol) == false)
|
||||
{
|
||||
if (diymemexp != null && dtTb.Parameter != null && dtTb.Parameter.Type.GetPropertiesDictIgnoreCase().TryGetValue(dtoProp.Name, out var dtTbProp))
|
||||
{
|
||||
var dbfield = diymemexp.ParseExp(new Expression[] { Expression.MakeMemberAccess(dtTb.Parameter, dtTbProp) });
|
||||
if (diymemexp.ParseExpMapResult != null)
|
||||
{
|
||||
var diychild = new ReadAnonymousTypeInfo
|
||||
{
|
||||
Property = dtoProp,
|
||||
CsName = dtoProp.Name,
|
||||
CsType = dtTbProp.PropertyType,
|
||||
MapType = dtTbProp.PropertyType
|
||||
};
|
||||
parent.Childs.Add(diychild);
|
||||
diychild.DbField = $"{dtTb.Alias}.{diymemexp.ParseExpMapResult.DbNestedField}";
|
||||
diychild.DbNestedField = diymemexp.ParseExpMapResult.DbNestedField;
|
||||
field.Append(", ").Append(diychild.DbField);
|
||||
if (index >= 0)
|
||||
{
|
||||
diychild.DbNestedField = $"as{++index}";
|
||||
field.Append(_common.FieldAsAlias(diychild.DbNestedField));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (trydtocol.Attribute.IsIgnore == true) continue;
|
||||
if (dicBindings?.ContainsKey(dtoProp.Name) == true) continue;
|
||||
|
||||
@ -280,8 +347,13 @@ namespace FreeSql.Internal
|
||||
else
|
||||
{
|
||||
child.DbField = $"{dtTb.Alias}.{_common.QuoteSqlName(trydtocol.Attribute.Name)}";
|
||||
child.DbNestedField = _common.QuoteSqlName(trydtocol.Attribute.Name);
|
||||
field.Append(", ").Append(_common.RereadColumn(trydtocol, child.DbField));
|
||||
if (index >= 0) field.Append(_common.FieldAsAlias($"as{++index}"));
|
||||
if (index >= 0)
|
||||
{
|
||||
child.DbNestedField = $"as{++index}";
|
||||
field.Append(_common.FieldAsAlias(child.DbNestedField));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -328,15 +400,18 @@ namespace FreeSql.Internal
|
||||
//处理构造参数
|
||||
for (var a = 0; a < newExp.Arguments.Count; a++)
|
||||
{
|
||||
var csname = newExp.Members != null ? newExp.Members[a].Name : (newExp.Arguments[a] as MemberExpression)?.Member.Name;
|
||||
var child = new ReadAnonymousTypeInfo
|
||||
{
|
||||
Property = null,
|
||||
CsName = newExp.Members != null ? newExp.Members[a].Name : (newExp.Arguments[a] as MemberExpression)?.Member.Name,
|
||||
CsName = csname,
|
||||
CsType = newExp.Arguments[a].Type,
|
||||
MapType = newExp.Arguments[a].Type
|
||||
};
|
||||
parent.Childs.Add(child);
|
||||
ReadAnonymousField(_tables, _tableRule, field, child, ref index, newExp.Arguments[a], select, diymemexp, whereGlobalFilter, findIncludeMany, findSubSelectMany, false);
|
||||
if (child.CsName == null)
|
||||
child.CsName = csname;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -348,7 +423,34 @@ namespace FreeSql.Internal
|
||||
{
|
||||
foreach (var dtTb in _tables)
|
||||
{
|
||||
if (dtTb.Table.ColumnsByCs.TryGetValue(dtoProp.Name, out var trydtocol) == false) continue;
|
||||
if (dtTb.Table.ColumnsByCs.TryGetValue(dtoProp.Name, out var trydtocol) == false)
|
||||
{
|
||||
if (diymemexp != null && dtTb.Parameter != null && dtTb.Parameter.Type.GetPropertiesDictIgnoreCase().TryGetValue(dtoProp.Name, out var dtTbProp))
|
||||
{
|
||||
var dbfield = diymemexp.ParseExp(new Expression[] { Expression.MakeMemberAccess(dtTb.Parameter, dtTbProp) });
|
||||
if (diymemexp.ParseExpMapResult != null)
|
||||
{
|
||||
var diychild = new ReadAnonymousTypeInfo
|
||||
{
|
||||
Property = dtoProp,
|
||||
CsName = dtoProp.Name,
|
||||
CsType = dtTbProp.PropertyType,
|
||||
MapType = dtTbProp.PropertyType
|
||||
};
|
||||
parent.Childs.Add(diychild);
|
||||
diychild.DbField = $"{dtTb.Alias}.{diymemexp.ParseExpMapResult.DbNestedField}";
|
||||
diychild.DbNestedField = diymemexp.ParseExpMapResult.DbNestedField;
|
||||
field.Append(", ").Append(diychild.DbField);
|
||||
if (index >= 0)
|
||||
{
|
||||
diychild.DbNestedField = $"as{++index}";
|
||||
field.Append(_common.FieldAsAlias(diychild.DbNestedField));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (trydtocol.Attribute.IsIgnore == true) continue;
|
||||
|
||||
var child = new ReadAnonymousTypeInfo
|
||||
@ -364,8 +466,13 @@ namespace FreeSql.Internal
|
||||
else
|
||||
{
|
||||
child.DbField = _common.RereadColumn(trydtocol, $"{dtTb.Alias}.{_common.QuoteSqlName(trydtocol.Attribute.Name)}");
|
||||
child.DbNestedField = _common.QuoteSqlName(trydtocol.Attribute.Name);
|
||||
field.Append(", ").Append(child.DbField);
|
||||
if (index >= 0) field.Append(_common.FieldAsAlias($"as{++index}"));
|
||||
if (index >= 0)
|
||||
{
|
||||
child.DbNestedField = $"as{++index}";
|
||||
field.Append(_common.FieldAsAlias(child.DbNestedField));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -376,8 +483,7 @@ namespace FreeSql.Internal
|
||||
}
|
||||
parent.DbField = $"({ExpressionLambdaToSql(exp, getTSC())})";
|
||||
field.Append(", ").Append(parent.DbField);
|
||||
if (index >= 0) field.Append(_common.FieldAsAlias($"as{++index}"));
|
||||
else if (index == ReadAnonymousFieldAsCsName && string.IsNullOrEmpty(parent.CsName) == false) field.Append(_common.FieldAsAlias(GetFieldAsCsName(parent.CsName)));
|
||||
LocalSetFieldAlias(ref index);
|
||||
if (parent.CsType == null && exp.Type.IsValueType) parent.CsType = exp.Type;
|
||||
return false;
|
||||
}
|
||||
@ -458,8 +564,8 @@ namespace FreeSql.Internal
|
||||
var testCol = _common.TrimQuoteSqlName(field).Split(new[] { '.' }, 2);
|
||||
if (testCol.Length == 2)
|
||||
{
|
||||
var testTb = _tables.Where(a => a.Alias == testCol[0]).ToArray();
|
||||
if (testTb.Length == 1 && testTb[0].Table.Columns.TryGetValue(testCol[1], out var trytstcol))
|
||||
var testTb = _tables.Where(a => a.Table != null && a.Alias == testCol[0]).ToArray();
|
||||
if (testTb.Length == 1 && testTb[0].Table.Columns.TryGetValue(testCol[1], out var trytstcol) == true)
|
||||
return trytstcol;
|
||||
}
|
||||
}
|
||||
@ -530,6 +636,12 @@ namespace FreeSql.Internal
|
||||
|
||||
public string ExpressionWhereLambda(List<SelectTableInfo> _tables, Func<Type, string, string> _tableRule, Expression exp, BaseDiyMemberExpression diymemexp, List<GlobalFilter.Item> whereGlobalFilter, List<DbParameter> dbParams)
|
||||
{
|
||||
if (_tables?.Count > 1)
|
||||
{
|
||||
foreach (var tb in _tables)
|
||||
if (tb.Parameter != null && tb.AliasInit.StartsWith("SP10"))
|
||||
tb.Alias = tb.Parameter.Name;
|
||||
}
|
||||
var sql = ExpressionLambdaToSql(exp, new ExpTSC { _tables = _tables, _tableRule = _tableRule, diymemexp = diymemexp, tbtype = SelectTableInfoType.From, isQuoteName = true, isDisableDiyParse = false, style = ExpressionStyle.Where, whereGlobalFilter = whereGlobalFilter, dbParams = dbParams });
|
||||
return GetBoolString(exp, sql);
|
||||
}
|
||||
@ -537,6 +649,12 @@ namespace FreeSql.Internal
|
||||
public void ExpressionJoinLambda(List<SelectTableInfo> _tables, Func<Type, string, string> _tableRule, SelectTableInfoType tbtype, Expression exp, BaseDiyMemberExpression diymemexp, List<GlobalFilter.Item> whereGlobalFilter)
|
||||
{
|
||||
var tbidx = _tables.Count;
|
||||
if (tbidx > 1)
|
||||
{
|
||||
foreach (var tb in _tables)
|
||||
if (tb.Parameter != null && tb.AliasInit.StartsWith("SP10"))
|
||||
tb.Alias = tb.Parameter.Name;
|
||||
}
|
||||
var sql = ExpressionLambdaToSql(exp, new ExpTSC { _tables = _tables, _tableRule = _tableRule, diymemexp = diymemexp, tbtype = tbtype, isQuoteName = true, isDisableDiyParse = false, style = ExpressionStyle.Where, whereGlobalFilter = whereGlobalFilter });
|
||||
sql = GetBoolString(exp, sql);
|
||||
|
||||
@ -777,6 +895,7 @@ namespace FreeSql.Internal
|
||||
return $"not({ExpressionLambdaToSql(notExp, tsc)})";
|
||||
case ExpressionType.Quote: return ExpressionLambdaToSql((exp as UnaryExpression)?.Operand, tsc);
|
||||
case ExpressionType.Lambda: return ExpressionLambdaToSql((exp as LambdaExpression)?.Body, tsc);
|
||||
case ExpressionType.Invoke: return formatSql(Expression.Lambda(exp).Compile().DynamicInvoke(), tsc.mapType, tsc.mapColumnTmp, tsc.dbParams);
|
||||
case ExpressionType.TypeAs:
|
||||
case ExpressionType.Convert:
|
||||
case ExpressionType.ConvertChecked:
|
||||
@ -1563,8 +1682,8 @@ namespace FreeSql.Internal
|
||||
{
|
||||
var expStackFirst = expStack.First();
|
||||
var bidx = expStackFirst.Type.FullName.StartsWith("FreeSql.ISelectGroupingAggregate`") ? 2 : 1; //.Key .Value
|
||||
var expText = tsc.diymemexp.ParseExp(expStack.Where((a, b) => b >= bidx).ToArray());
|
||||
if (string.IsNullOrEmpty(expText) == false) return expText;
|
||||
var diyexpResult = tsc.diymemexp.ParseExp(expStack.Where((a, b) => b >= bidx).ToArray());
|
||||
if (string.IsNullOrEmpty(diyexpResult) == false) return diyexpResult;
|
||||
}
|
||||
var psgpdymes = _subSelectParentDiyMemExps.Value; //解决:分组之后的子查询解析
|
||||
if (psgpdymes?.Any() == true)
|
||||
@ -1572,8 +1691,8 @@ namespace FreeSql.Internal
|
||||
var expStackFirst = expStack.First();
|
||||
if (expStackFirst.NodeType == ExpressionType.Parameter)
|
||||
{
|
||||
var expText = psgpdymes.Where(a => a._lambdaParameter == expStackFirst).FirstOrDefault()?.ParseExp(expStack.Where((a, b) => b >= 2).ToArray());
|
||||
if (string.IsNullOrEmpty(expText) == false) return expText;
|
||||
var diyexpResult = psgpdymes.Where(a => a._lambdaParameter == expStackFirst).FirstOrDefault()?.ParseExp(expStack.Where((a, b) => b >= 2).ToArray());
|
||||
if (string.IsNullOrEmpty(diyexpResult) == false) return diyexpResult;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -46,6 +46,11 @@ namespace FreeSql.Internal.CommonProvider
|
||||
public List<GlobalFilter.Item> _whereGlobalFilter;
|
||||
public Func<bool> _cancel;
|
||||
public bool _is_AsTreeCte;
|
||||
public BaseDiyMemberExpression _diymemexpWithTempQuery;
|
||||
|
||||
public bool IsDefaultSqlContent => _distinct == false && _is_AsTreeCte == false && _tables.Count == 1 && _where.Length == 0 && _join.Length == 0 &&
|
||||
string.IsNullOrWhiteSpace(_orderby) && string.IsNullOrWhiteSpace(_groupby) && string.IsNullOrWhiteSpace(_tosqlAppendContent) &&
|
||||
_aliasRule == null && _selectExpression == null;
|
||||
|
||||
public Select0Provider()
|
||||
{
|
||||
@ -71,6 +76,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
_selectExpression = null;
|
||||
_whereGlobalFilter?.Clear();
|
||||
_cancel = null;
|
||||
_diymemexpWithTempQuery = null;
|
||||
}
|
||||
|
||||
public static void CopyData(Select0Provider from, Select0Provider to, ReadOnlyCollection<ParameterExpression> lambParms)
|
||||
@ -86,7 +92,16 @@ namespace FreeSql.Internal.CommonProvider
|
||||
to._params = new List<DbParameter>(from._params.ToArray());
|
||||
|
||||
if (lambParms == null)
|
||||
to._tables = new List<SelectTableInfo>(from._tables.ToArray());
|
||||
{
|
||||
if (to._tables.Count <= from._tables.Count)
|
||||
to._tables = new List<SelectTableInfo>(from._tables.ToArray());
|
||||
else
|
||||
{
|
||||
to._tables = new List<SelectTableInfo>(to._tables);
|
||||
for (var a = 0; a < from._tables.Count; a++)
|
||||
to._tables[a] = from._tables[a];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var findedIndexs = new List<int>();
|
||||
@ -131,6 +146,95 @@ namespace FreeSql.Internal.CommonProvider
|
||||
to._whereGlobalFilter = new List<GlobalFilter.Item>(from._whereGlobalFilter.ToArray());
|
||||
to._cancel = from._cancel;
|
||||
to._is_AsTreeCte = from._is_AsTreeCte;
|
||||
to._diymemexpWithTempQuery = from._diymemexpWithTempQuery;
|
||||
}
|
||||
|
||||
internal class WithTempQueryParser : BaseDiyMemberExpression
|
||||
{
|
||||
public List<InsideInfo> _insideSelectList = new List<InsideInfo>();
|
||||
public List<SelectTableInfo> _outsideTable = new List<SelectTableInfo>();
|
||||
public WithTempQueryParser(Select0Provider insideSelect, SelectGroupingProvider insideSelectGroup, Expression selector, SelectTableInfo outsideTable)
|
||||
{
|
||||
_insideSelectList.Add(new InsideInfo(insideSelect, insideSelectGroup, selector));
|
||||
_outsideTable.Add(outsideTable);
|
||||
}
|
||||
public class InsideInfo
|
||||
{
|
||||
public Select0Provider InsideSelect { get; }
|
||||
public SelectGroupingProvider InsideSelectGroup { get; }
|
||||
public CommonExpression InsideComonExp;
|
||||
public string InsideField { get; }
|
||||
public ReadAnonymousTypeAfInfo InsideAf { get; }
|
||||
public ReadAnonymousTypeInfo InsideMap { get; }
|
||||
|
||||
public InsideInfo(Select0Provider insideSelect, SelectGroupingProvider insideSelectGroup, Expression selector)
|
||||
{
|
||||
InsideSelect = insideSelect;
|
||||
InsideSelectGroup = insideSelectGroup;
|
||||
|
||||
InsideMap = new ReadAnonymousTypeInfo();
|
||||
var field = new StringBuilder();
|
||||
var index = CommonExpression.ReadAnonymousFieldAsCsName; //AsProperty
|
||||
|
||||
if (selector != null)
|
||||
{
|
||||
if (insideSelectGroup != null)
|
||||
InsideSelect._commonExpression.ReadAnonymousField(null, insideSelect._tableRule, field, InsideMap, ref index, selector, insideSelect, InsideSelectGroup, null, null, null, false);
|
||||
else if (insideSelect != null)
|
||||
InsideSelect._commonExpression.ReadAnonymousField(insideSelect._tables, InsideSelect._tableRule, field, InsideMap, ref index, selector, null, insideSelect._diymemexpWithTempQuery, insideSelect._whereGlobalFilter, null, null, false); //不走 DTO 映射,不处理 IncludeMany
|
||||
}
|
||||
InsideField = field.Length > 0 ? field.Remove(0, 2).ToString() : null;
|
||||
InsideAf = new ReadAnonymousTypeAfInfo(InsideMap, "*");
|
||||
}
|
||||
}
|
||||
|
||||
public WithTempQueryParser Append<TDto>(ISelect<TDto> select, SelectTableInfo outsideTable)
|
||||
{
|
||||
if (outsideTable != null && (select as Select0Provider)?._diymemexpWithTempQuery is WithTempQueryParser withTempQuery)
|
||||
{
|
||||
_insideSelectList.Add(withTempQuery._insideSelectList[0]);
|
||||
_outsideTable.Add(outsideTable);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public SelectTableInfo ParseExpMatchedTable { get; private set; }
|
||||
public override string ParseExp(Expression[] members)
|
||||
{
|
||||
ParseExpMapResult = null;
|
||||
ParseExpMatchedTable = GetOutsideSelectTable(members.FirstOrDefault()?.GetParameter());
|
||||
var insideIndex = _outsideTable.FindIndex(a => a == ParseExpMatchedTable);
|
||||
if (insideIndex == -1)
|
||||
{
|
||||
ParseExpMatchedTable = null;
|
||||
return null;
|
||||
}
|
||||
var insideData = _insideSelectList[insideIndex];
|
||||
if (members.Any() == false)
|
||||
{
|
||||
ParseExpMapResult = insideData.InsideMap;
|
||||
return $"{ParseExpMatchedTable.Alias}.{insideData.InsideMap.DbNestedField}";
|
||||
}
|
||||
var read = insideData.InsideMap;
|
||||
for (var a = 0; a < members.Length; a++)
|
||||
{
|
||||
read = read.Childs.Where(z => z.CsName == (members[a] as MemberExpression)?.Member.Name).FirstOrDefault();
|
||||
if (read == null) return null;
|
||||
}
|
||||
ParseExpMapResult = read;
|
||||
return $"{ParseExpMatchedTable.Alias}.{read.DbNestedField}";
|
||||
}
|
||||
public SelectTableInfo GetOutsideSelectTable(ParameterExpression parameterExp)
|
||||
{
|
||||
if (parameterExp == null) return _outsideTable[0];
|
||||
var find = _outsideTable.Where(a => a.Parameter == parameterExp).ToArray();
|
||||
if (find.Length == 1) return find[0];
|
||||
find = _outsideTable.Where(a => a.Table.Type == parameterExp.Type).ToArray();
|
||||
if (find.Length == 1) return find[0];
|
||||
find = _outsideTable.Where(a => a.Alias == parameterExp.Name).ToArray();
|
||||
if (find.Length == 1) return find[0];
|
||||
return _outsideTable[0];
|
||||
}
|
||||
}
|
||||
|
||||
public Expression ConvertStringPropertyToExpression(string property, bool fromFirstTable = false)
|
||||
@ -276,7 +380,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var field = new StringBuilder();
|
||||
var index = fieldAlias == FieldAliasOptions.AsProperty ? CommonExpression.ReadAnonymousFieldAsCsName : 0;
|
||||
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, newexp, this, null, _whereGlobalFilter, null, null, true);
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, newexp, this, _diymemexpWithTempQuery, _whereGlobalFilter, null, null, true);
|
||||
return new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null);
|
||||
}
|
||||
public string GetNestSelectSql(Expression select, string affield, Func<string, string> ToSql)
|
||||
@ -762,6 +866,18 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
public TSelect AsTable(Func<Type, string, string> tableRule)
|
||||
{
|
||||
if (_tableRules.Count == 1 && _diymemexpWithTempQuery != null && _diymemexpWithTempQuery is WithTempQueryParser tempQueryParser)
|
||||
{
|
||||
var oldTableRule = _tableRules[0];
|
||||
var newTableRule = tableRule;
|
||||
_tableRules.Clear();
|
||||
tableRule = (type, old) =>
|
||||
{
|
||||
var tbname = newTableRule(type, null);
|
||||
if (tbname != null) return tbname;
|
||||
return oldTableRule(type, old);
|
||||
};
|
||||
}
|
||||
if (tableRule != null) _tableRules.Add(tableRule);
|
||||
return this as TSelect;
|
||||
}
|
||||
@ -796,7 +912,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (condition == false) return this as TSelect;
|
||||
Expression exp = ConvertStringPropertyToExpression(property);
|
||||
if (exp == null) return this as TSelect;
|
||||
var field = _commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, null);
|
||||
var field = _commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, _diymemexpWithTempQuery);
|
||||
if (isAscending) return this.OrderBy(field);
|
||||
return this.OrderBy($"{field} DESC");
|
||||
}
|
||||
@ -930,7 +1046,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return new string[0];
|
||||
}
|
||||
|
||||
var sql = _commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp, null, null, _params);
|
||||
var sql = _commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp, _diymemexpWithTempQuery, null, _params);
|
||||
|
||||
sb.Append(sql);
|
||||
}
|
||||
@ -1042,6 +1158,19 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this as TSelect;
|
||||
}
|
||||
|
||||
public ISelect<TDto> InternalWithTempQuery<TDto>(Expression selector)
|
||||
{
|
||||
if (_orm.CodeFirst.IsAutoSyncStructure)
|
||||
(_orm.CodeFirst as CodeFirstProvider)._dicSycedTryAdd(typeof(TDto)); //._dicSyced.TryAdd(typeof(TReturn), true);
|
||||
var ret = (_orm as BaseDbProvider).CreateSelectProvider<TDto>(null) as Select1Provider<TDto>;
|
||||
if (ret._tables[0].Table == null) ret._tables[0].Table = TableInfo.GetDefaultTable(typeof(TDto));
|
||||
var parser = new WithTempQueryParser(this, null, selector, ret._tables[0]);
|
||||
var sql = $"\r\n{this.ToSql(parser._insideSelectList[0].InsideField)}";
|
||||
ret.WithSql(sql);
|
||||
ret._diymemexpWithTempQuery = parser;
|
||||
return ret;
|
||||
}
|
||||
|
||||
public bool Any()
|
||||
{
|
||||
this.Limit(1);
|
||||
@ -1079,6 +1208,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
public List<T1> ToList() => ToList(false);
|
||||
public virtual List<T1> ToList(bool includeNestedMembers)
|
||||
{
|
||||
if (_diymemexpWithTempQuery != null) return this.ToListMapReaderPrivate<T1>((_diymemexpWithTempQuery as WithTempQueryParser)._insideSelectList[0].InsideAf, null);
|
||||
if (_selectExpression != null) return this.InternalToList<T1>(_selectExpression);
|
||||
return this.ToListPrivate(includeNestedMembers == false ? this.GetAllFieldExpressionTreeLevel2() : this.GetAllFieldExpressionTreeLevelAll(), null);
|
||||
}
|
||||
@ -1123,6 +1253,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
public Task<List<T1>> ToListAsync(CancellationToken cancellationToken = default) => ToListAsync(false, cancellationToken);
|
||||
public virtual Task<List<T1>> ToListAsync(bool includeNestedMembers = false, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (_diymemexpWithTempQuery != null) return this.ToListMapReaderPrivateAsync<T1>((_diymemexpWithTempQuery as WithTempQueryParser)._insideSelectList[0].InsideAf, null, cancellationToken);
|
||||
if (_selectExpression != null) return this.InternalToListAsync<T1>(_selectExpression, cancellationToken);
|
||||
return this.ToListPrivateAsync(includeNestedMembers == false ? this.GetAllFieldExpressionTreeLevel2() : this.GetAllFieldExpressionTreeLevelAll(), null, cancellationToken);
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var property = properties[propIdx];
|
||||
var exp = ConvertStringPropertyToExpression(property);
|
||||
if (exp == null) throw new Exception(CoreStrings.Property_Cannot_Find(property));
|
||||
var field = _commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, null);
|
||||
var field = _commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, _diymemexpWithTempQuery);
|
||||
if (propIdx > 0) sbfield.Append(", ");
|
||||
sbfield.Append(field);
|
||||
//if (field != property)
|
||||
@ -547,13 +547,21 @@ namespace FreeSql.Internal.CommonProvider
|
||||
static EventHandler<Aop.AuditDataReaderEventArgs> _OldAuditDataReaderHandler;
|
||||
public GetAllFieldExpressionTreeInfo GetAllFieldExpressionTreeLevel2(bool isRereadSql = true)
|
||||
{
|
||||
if (_diymemexpWithTempQuery != null)
|
||||
{
|
||||
return new GetAllFieldExpressionTreeInfo
|
||||
{
|
||||
Field = "*",
|
||||
Read = (orm, dr) => throw new Exception("GetAllFieldExpressionTreeInfo.Read Is Null")
|
||||
};
|
||||
}
|
||||
if (_selectExpression != null) //ToSql
|
||||
{
|
||||
var af = this.GetExpressionField(_selectExpression);
|
||||
return new GetAllFieldExpressionTreeInfo
|
||||
{
|
||||
Field = af.field,
|
||||
Read = (dr, idx) => throw new Exception("GetAllFieldExpressionTreeInfo.Read Is Null")
|
||||
Read = (orm, dr) => throw new Exception("GetAllFieldExpressionTreeInfo.Read Is Null")
|
||||
};
|
||||
}
|
||||
if (_OldAuditDataReaderHandler != _orm.Aop.AuditDataReaderHandler)
|
||||
@ -751,7 +759,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
protected double InternalAvg(Expression exp)
|
||||
{
|
||||
var field = $"avg({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, null)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
var field = $"avg({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, _diymemexpWithTempQuery)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
if (_limit <= 0 && _skip <= 0)
|
||||
{
|
||||
var list = this.ToList<double>(field);
|
||||
@ -764,7 +772,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
protected TMember InternalMax<TMember>(Expression exp)
|
||||
{
|
||||
var field = $"max({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, null)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
var field = $"max({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, _diymemexpWithTempQuery)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
if (_limit <= 0 && _skip <= 0) return this.ToList<TMember>(field).Max();
|
||||
|
||||
var sql = GetNestSelectSql(exp, field, ToSql);
|
||||
@ -772,7 +780,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
protected TMember InternalMin<TMember>(Expression exp)
|
||||
{
|
||||
var field = $"min({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, null)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
var field = $"min({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, _diymemexpWithTempQuery)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
if (_limit <= 0 && _skip <= 0) return this.ToList<TMember>(field).Min();
|
||||
|
||||
var sql = GetNestSelectSql(exp, field, ToSql);
|
||||
@ -780,7 +788,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
protected decimal InternalSum(Expression exp)
|
||||
{
|
||||
var field = $"sum({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, null)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
var field = $"sum({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, _diymemexpWithTempQuery)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
if (_limit <= 0 && _skip <= 0) return this.ToList<decimal>(field).Sum();
|
||||
|
||||
var sql = GetNestSelectSql(exp, field, ToSql);
|
||||
@ -793,14 +801,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var field = new StringBuilder();
|
||||
var index = -10000; //临时规则,不返回 as1
|
||||
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, columns, null, null, _whereGlobalFilter, null, null, false); //不走 DTO 映射,不处理 IncludeMany
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, columns, null, _diymemexpWithTempQuery, _whereGlobalFilter, null, null, false); //不走 DTO 映射,不处理 IncludeMany
|
||||
var sql = field.ToString();
|
||||
this.GroupBy(sql.Length > 0 ? sql.Substring(2) : null);
|
||||
return new SelectGroupingProvider<TKey, TValue>(_orm, this, map, sql, _commonExpression, _tables);
|
||||
}
|
||||
public TSelect InternalJoin(Expression exp, SelectTableInfoType joinType)
|
||||
{
|
||||
_commonExpression.ExpressionJoinLambda(_tables, _tableRule, joinType, exp, null, _whereGlobalFilter);
|
||||
_commonExpression.ExpressionJoinLambda(_tables, _tableRule, joinType, exp, _diymemexpWithTempQuery, _whereGlobalFilter);
|
||||
return this as TSelect;
|
||||
}
|
||||
protected TSelect InternalJoin<T2>(Expression exp, SelectTableInfoType joinType)
|
||||
@ -808,7 +816,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var tb = _commonUtils.GetTableByEntity(typeof(T2));
|
||||
if (tb == null) throw new ArgumentException(CoreStrings.T2_Type_Error);
|
||||
_tables.Add(new SelectTableInfo { Table = tb, Alias = $"IJ{_tables.Count}", On = null, Type = joinType });
|
||||
_commonExpression.ExpressionJoinLambda(_tables, _tableRule, joinType, exp, null, _whereGlobalFilter);
|
||||
_commonExpression.ExpressionJoinLambda(_tables, _tableRule, joinType, exp, _diymemexpWithTempQuery, _whereGlobalFilter);
|
||||
return this as TSelect;
|
||||
}
|
||||
protected TSelect InternalOrderBy(Expression column)
|
||||
@ -819,10 +827,10 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case ExpressionType.New:
|
||||
var newExp = column as NewExpression;
|
||||
if (newExp == null) break;
|
||||
for (var a = 0; a < newExp.Members.Count; a++) this.OrderBy(_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, newExp.Arguments[a], true, null));
|
||||
for (var a = 0; a < newExp.Members.Count; a++) this.OrderBy(_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, newExp.Arguments[a], true, _diymemexpWithTempQuery));
|
||||
return this as TSelect;
|
||||
}
|
||||
return this.OrderBy(_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, column, true, null));
|
||||
return this.OrderBy(_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, column, true, _diymemexpWithTempQuery));
|
||||
}
|
||||
protected TSelect InternalOrderByDescending(Expression column)
|
||||
{
|
||||
@ -832,10 +840,10 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case ExpressionType.New:
|
||||
var newExp = column as NewExpression;
|
||||
if (newExp == null) break;
|
||||
for (var a = 0; a < newExp.Members.Count; a++) this.OrderBy($"{_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, newExp.Arguments[a], true, null)} DESC");
|
||||
for (var a = 0; a < newExp.Members.Count; a++) this.OrderBy($"{_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, newExp.Arguments[a], true, _diymemexpWithTempQuery)} DESC");
|
||||
return this as TSelect;
|
||||
}
|
||||
return this.OrderBy($"{_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, column, true, null)} DESC");
|
||||
return this.OrderBy($"{_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, column, true, _diymemexpWithTempQuery)} DESC");
|
||||
}
|
||||
|
||||
public List<TReturn> InternalToList<TReturn>(Expression select)
|
||||
@ -845,7 +853,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var index = 0;
|
||||
var findSubSelectMany = new List<Expression>();
|
||||
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, select, this, null, _whereGlobalFilter, null, findSubSelectMany, true);
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, select, this, _diymemexpWithTempQuery, _whereGlobalFilter, null, findSubSelectMany, true);
|
||||
var af = new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null);
|
||||
if (findSubSelectMany.Any() == false) return this.ToListMapReaderPrivate<TReturn>(af, new ReadAnonymousTypeOtherInfo[0]);
|
||||
|
||||
@ -862,7 +870,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
var otherMap = new ReadAnonymousTypeInfo();
|
||||
field.Clear();
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, otherMap, ref index, find.Item1, this, null, _whereGlobalFilter, null, null, true);
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, otherMap, ref index, find.Item1, this, _diymemexpWithTempQuery, _whereGlobalFilter, null, null, true);
|
||||
var otherRet = new List<object>();
|
||||
var otherAf = new ReadAnonymousTypeOtherInfo(field.ToString(), otherMap, otherRet);
|
||||
afs.Add(NativeTuple.Create(find.Item1, find.Item2, otherAf));
|
||||
@ -947,7 +955,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var field = new StringBuilder();
|
||||
var index = -10000; //临时规则,不返回 as1
|
||||
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, select, null, null, _whereGlobalFilter, null, null, false); //不走 DTO 映射,不处理 IncludeMany
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, select, null, _diymemexpWithTempQuery, _whereGlobalFilter, null, null, false); //不走 DTO 映射,不处理 IncludeMany
|
||||
|
||||
var childs = map.Childs;
|
||||
if (childs.Any() == false) throw new ArgumentException(CoreStrings.InsertInto_No_Property_Selected(typeof(TTargetEntity).DisplayCsharp()));
|
||||
@ -1028,7 +1036,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var field = new StringBuilder();
|
||||
var index = 0;
|
||||
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, select, null, null, _whereGlobalFilter, null, null, false); //不走 DTO 映射,不处理 IncludeMany
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, select, null, _diymemexpWithTempQuery, _whereGlobalFilter, null, null, false); //不走 DTO 映射,不处理 IncludeMany
|
||||
var af = new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null);
|
||||
if (GetTableRuleUnions().Count <= 1) return this.ToListMapReader<TReturn>(af).FirstOrDefault();
|
||||
|
||||
@ -1041,7 +1049,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
}
|
||||
|
||||
public TSelect InternalWhere(Expression exp) => exp == null ? this as TSelect : this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp, null, _whereGlobalFilter, _params));
|
||||
public TSelect InternalWhere(Expression exp) => exp == null ? this as TSelect : this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
|
||||
#region Async
|
||||
#if net40
|
||||
@ -1055,7 +1063,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var property = properties[propIdx];
|
||||
var exp = ConvertStringPropertyToExpression(property);
|
||||
if (exp == null) throw new Exception(CoreStrings.Property_Cannot_Find(property));
|
||||
var field = _commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, null);
|
||||
var field = _commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, _diymemexpWithTempQuery);
|
||||
if (propIdx > 0) sbfield.Append(", ");
|
||||
sbfield.Append(field);
|
||||
//if (field != property)
|
||||
@ -1299,7 +1307,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
async protected Task<double> InternalAvgAsync(Expression exp, CancellationToken cancellationToken)
|
||||
{
|
||||
var field = $"avg({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, null)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
var field = $"avg({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, _diymemexpWithTempQuery)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
if (_limit <= 0 && _skip <= 0)
|
||||
{
|
||||
var list = await this.ToListAsync<double>(field, cancellationToken);
|
||||
@ -1312,7 +1320,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
async protected Task<TMember> InternalMaxAsync<TMember>(Expression exp, CancellationToken cancellationToken)
|
||||
{
|
||||
var field = $"max({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, null)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
var field = $"max({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, _diymemexpWithTempQuery)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
if (_limit <= 0 && _skip <= 0) return (await this.ToListAsync<TMember>(field, cancellationToken)).Max();
|
||||
|
||||
var sql = GetNestSelectSql(exp, field, ToSql);
|
||||
@ -1320,7 +1328,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
async protected Task<TMember> InternalMinAsync<TMember>(Expression exp, CancellationToken cancellationToken)
|
||||
{
|
||||
var field = $"min({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, null)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
var field = $"min({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, _diymemexpWithTempQuery)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
if (_limit <= 0 && _skip <= 0) return (await this.ToListAsync<TMember>(field, cancellationToken)).Min();
|
||||
|
||||
var sql = GetNestSelectSql(exp, field, ToSql);
|
||||
@ -1328,7 +1336,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
async protected Task<decimal> InternalSumAsync(Expression exp, CancellationToken cancellationToken)
|
||||
{
|
||||
var field = $"sum({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, null)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
var field = $"sum({_commonExpression.ExpressionSelectColumn_MemberAccess(_tables, _tableRule, null, SelectTableInfoType.From, exp, true, _diymemexpWithTempQuery)}){_commonUtils.FieldAsAlias("as1")}";
|
||||
if (_limit <= 0 && _skip <= 0) return (await this.ToListAsync<decimal>(field, cancellationToken)).Sum();
|
||||
|
||||
var sql = GetNestSelectSql(exp, field, ToSql);
|
||||
@ -1344,7 +1352,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var index = 0;
|
||||
var findSubSelectMany = new List<Expression>();
|
||||
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, select, this, null, _whereGlobalFilter, null, findSubSelectMany, true);
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, select, this, _diymemexpWithTempQuery, _whereGlobalFilter, null, findSubSelectMany, true);
|
||||
var af = new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null);
|
||||
if (findSubSelectMany.Any() == false) return await this.ToListMapReaderPrivateAsync<TReturn>(af, new ReadAnonymousTypeOtherInfo[0], cancellationToken);
|
||||
|
||||
@ -1361,7 +1369,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
var otherMap = new ReadAnonymousTypeInfo();
|
||||
field.Clear();
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, otherMap, ref index, find.Item1, this, null, _whereGlobalFilter, null, null, true);
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, otherMap, ref index, find.Item1, this, _diymemexpWithTempQuery, _whereGlobalFilter, null, null, true);
|
||||
var otherRet = new List<object>();
|
||||
var otherAf = new ReadAnonymousTypeOtherInfo(field.ToString(), otherMap, otherRet);
|
||||
afs.Add(NativeTuple.Create(find.Item1, find.Item2, otherAf));
|
||||
@ -1521,7 +1529,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var field = new StringBuilder();
|
||||
var index = 0;
|
||||
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, select, null, null, _whereGlobalFilter, null, null, false); //不走 DTO 映射,不处理 IncludeMany
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, select, null, _diymemexpWithTempQuery, _whereGlobalFilter, null, null, false); //不走 DTO 映射,不处理 IncludeMany
|
||||
var af = new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null);
|
||||
if (GetTableRuleUnions().Count <= 1) return (await this.ToListMapReaderAsync<TReturn>(af, cancellationToken)).FirstOrDefault();
|
||||
|
||||
|
@ -27,16 +27,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
protected ISelect<T1> InternalFrom(LambdaExpression lambdaExp)
|
||||
{
|
||||
if (lambdaExp != null)
|
||||
if (lambdaExp == null) return this;
|
||||
for (var a = 1; a < lambdaExp.Parameters.Count; a++)
|
||||
{
|
||||
for (var a = 1; a < lambdaExp.Parameters.Count; a++)
|
||||
{
|
||||
var tb = _commonUtils.GetTableByEntity(lambdaExp.Parameters[a].Type);
|
||||
if (tb == null) throw new ArgumentException(CoreStrings.Type_Error_Name(lambdaExp.Parameters[a].Name));
|
||||
_tables.Add(new SelectTableInfo { Table = tb, Alias = lambdaExp.Parameters[a].Name, On = null, Type = SelectTableInfoType.From });
|
||||
}
|
||||
var tb = _commonUtils.GetTableByEntity(lambdaExp.Parameters[a].Type);
|
||||
if (tb == null) throw new ArgumentException(CoreStrings.Type_Error_Name(lambdaExp.Parameters[a].Name));
|
||||
_tables.Add(new SelectTableInfo { Table = tb, Alias = lambdaExp.Parameters[a].Name, On = null, Type = SelectTableInfoType.From });
|
||||
}
|
||||
var exp = lambdaExp?.Body;
|
||||
var exp = lambdaExp.Body;
|
||||
if (exp?.NodeType == ExpressionType.Call)
|
||||
{
|
||||
var expCall = exp as MethodCallExpression;
|
||||
@ -60,7 +58,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case "OrderBy":
|
||||
if (expCall.Arguments.Count == 2 && expCall.Arguments[0].Type == typeof(bool))
|
||||
{
|
||||
var ifcond = _commonExpression.ExpressionSelectColumn_MemberAccess(null, _tableRule, null, SelectTableInfoType.From, expCall.Arguments[0], false, null);
|
||||
var ifcond = _commonExpression.ExpressionSelectColumn_MemberAccess(null, _tableRule, null, SelectTableInfoType.From, expCall.Arguments[0], false, _diymemexpWithTempQuery);
|
||||
if (ifcond == "1" || ifcond == "'t'")
|
||||
this.InternalOrderBy(expCall.Arguments.LastOrDefault());
|
||||
break;
|
||||
@ -70,7 +68,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case "OrderByDescending":
|
||||
if (expCall.Arguments.Count == 2 && expCall.Arguments[0].Type == typeof(bool))
|
||||
{
|
||||
var ifcond = _commonExpression.ExpressionSelectColumn_MemberAccess(null, _tableRule, null, SelectTableInfoType.From, expCall.Arguments[0], false, null);
|
||||
var ifcond = _commonExpression.ExpressionSelectColumn_MemberAccess(null, _tableRule, null, SelectTableInfoType.From, expCall.Arguments[0], false, _diymemexpWithTempQuery);
|
||||
if (ifcond == "1" || ifcond == "'t'" || ifcond == "-1")//MsAccess -1
|
||||
this.InternalOrderByDescending(expCall.Arguments.LastOrDefault());
|
||||
break;
|
||||
@ -108,22 +106,47 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this.InternalAvg(column?.Body);
|
||||
}
|
||||
|
||||
public abstract ISelect<T1, T2> From<T2>(Expression<Func<ISelectFromExpression<T1>, T2, ISelectFromExpression<T1>>> exp) where T2 : class;
|
||||
public abstract ISelect<T1, T2, T3> From<T2, T3>(Expression<Func<ISelectFromExpression<T1>, T2, T3, ISelectFromExpression<T1>>> exp) where T2 : class where T3 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4> From<T2, T3, T4>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, ISelectFromExpression<T1>>> exp) where T2 : class where T3 : class where T4 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5> From<T2, T3, T4, T5>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, ISelectFromExpression<T1>>> exp) where T2 : class where T3 : class where T4 : class where T5 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6> From<T2, T3, T4, T5, T6>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, ISelectFromExpression<T1>>> exp) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7> From<T2, T3, T4, T5, T6, T7>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, ISelectFromExpression<T1>>> exp) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8> From<T2, T3, T4, T5, T6, T7, T8>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, ISelectFromExpression<T1>>> exp) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9> From<T2, T3, T4, T5, T6, T7, T8, T9>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, ISelectFromExpression<T1>>> exp) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> From<T2, T3, T4, T5, T6, T7, T8, T9, T10>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, T10, ISelectFromExpression<T1>>> exp) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class;
|
||||
public abstract ISelect<T1, T2> From<T2>(Expression<Func<ISelectFromExpression<T1>, T2, ISelectFromExpression<T1>>> exp = null) where T2 : class;
|
||||
public abstract ISelect<T1, T2, T3> From<T2, T3>(Expression<Func<ISelectFromExpression<T1>, T2, T3, ISelectFromExpression<T1>>> exp = null) where T2 : class where T3 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4> From<T2, T3, T4>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, ISelectFromExpression<T1>>> exp = null) where T2 : class where T3 : class where T4 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5> From<T2, T3, T4, T5>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, ISelectFromExpression<T1>>> exp = null) where T2 : class where T3 : class where T4 : class where T5 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6> From<T2, T3, T4, T5, T6>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, ISelectFromExpression<T1>>> exp = null) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7> From<T2, T3, T4, T5, T6, T7>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, ISelectFromExpression<T1>>> exp = null) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8> From<T2, T3, T4, T5, T6, T7, T8>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, ISelectFromExpression<T1>>> exp = null) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9> From<T2, T3, T4, T5, T6, T7, T8, T9>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, ISelectFromExpression<T1>>> exp = null) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> From<T2, T3, T4, T5, T6, T7, T8, T9, T10>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, T10, ISelectFromExpression<T1>>> exp = null) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class;
|
||||
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> From<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, ISelectFromExpression<T1>>> exp) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class where T11 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> From<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, ISelectFromExpression<T1>>> exp) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class where T11 : class where T12 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> From<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, ISelectFromExpression<T1>>> exp) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class where T11 : class where T12 : class where T13 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> From<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, ISelectFromExpression<T1>>> exp) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class where T11 : class where T12 : class where T13 : class where T14 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> From<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, ISelectFromExpression<T1>>> exp) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class where T11 : class where T12 : class where T13 : class where T14 : class where T15 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> From<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, ISelectFromExpression<T1>>> exp) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class where T11 : class where T12 : class where T13 : class where T14 : class where T15 : class where T16 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> From<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, ISelectFromExpression<T1>>> exp = null) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class where T11 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> From<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, ISelectFromExpression<T1>>> exp = null) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class where T11 : class where T12 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> From<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, ISelectFromExpression<T1>>> exp = null) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class where T11 : class where T12 : class where T13 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> From<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, ISelectFromExpression<T1>>> exp = null) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class where T11 : class where T12 : class where T13 : class where T14 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> From<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, ISelectFromExpression<T1>>> exp = null) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class where T11 : class where T12 : class where T13 : class where T14 : class where T15 : class;
|
||||
public abstract ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> From<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(Expression<Func<ISelectFromExpression<T1>, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, ISelectFromExpression<T1>>> exp = null) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class where T11 : class where T12 : class where T13 : class where T14 : class where T15 : class where T16 : class;
|
||||
|
||||
|
||||
public ISelect<T1, T2> FromQuery<T2>(ISelect<T2> select2) where T2 : class
|
||||
{
|
||||
var ret = From<T2>();
|
||||
var retsp = ret as Select0Provider;
|
||||
var rettbs = retsp._tables;
|
||||
if (rettbs[1].Table == null) rettbs[1].Table = TableInfo.GetDefaultTable(typeof(T2));
|
||||
(_diymemexpWithTempQuery as WithTempQueryParser)?.Append(select2, rettbs[1]);
|
||||
var select2sp = select2 as Select0Provider;
|
||||
string sql2 = null;
|
||||
if (select2sp._diymemexpWithTempQuery == null)
|
||||
sql2 = select2?.ToSql(a => a, FieldAliasOptions.AsProperty);
|
||||
else
|
||||
{
|
||||
if (select2sp._tableRule != null && select2sp.IsDefaultSqlContent == true)
|
||||
{
|
||||
sql2 = select2sp._tableRule(select2sp._tables[0].Table.Type, null);
|
||||
if (sql2.StartsWith("(") && sql2.EndsWith(")")) sql2 = sql2.Substring(1, sql2.Length - 2);
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(sql2))
|
||||
sql2 = select2?.ToSql("*");
|
||||
}
|
||||
return ret.WithSql(null, sql2);
|
||||
}
|
||||
|
||||
public ISelectGrouping<TKey, T1> GroupBy<TKey>(Expression<Func<T1, TKey>> columns)
|
||||
{
|
||||
@ -197,7 +220,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var map = new ReadAnonymousTypeInfo();
|
||||
var field = new StringBuilder();
|
||||
var index = 0;
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, select.Body, this, null, _whereGlobalFilter, findIncludeMany, null, true);
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, select.Body, this, _diymemexpWithTempQuery, _whereGlobalFilter, findIncludeMany, null, true);
|
||||
var af = new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null);
|
||||
if (findIncludeMany.Any() == false) return this.ToListMapReaderPrivate<TReturn>(af, null);
|
||||
|
||||
@ -241,7 +264,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
var otherMap = new ReadAnonymousTypeInfo();
|
||||
field.Clear();
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, otherMap, ref index, otherNewInit, this, null, _whereGlobalFilter, null, null, true);
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, otherMap, ref index, otherNewInit, this, _diymemexpWithTempQuery, _whereGlobalFilter, null, null, true);
|
||||
var otherRet = new List<object>();
|
||||
var otherAf = new ReadAnonymousTypeOtherInfo(field.ToString(), otherMap, otherRet);
|
||||
|
||||
@ -396,6 +419,8 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
public ISelect<TDto> WithTempQuery<TDto>(Expression<Func<T1, TDto>> selector) => InternalWithTempQuery<TDto>(selector);
|
||||
|
||||
public bool Any(Expression<Func<T1, bool>> exp)
|
||||
{
|
||||
var oldwhere = _where.ToString();
|
||||
@ -440,7 +465,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case TableRefType.OneToOne:
|
||||
_isIncluded = true;
|
||||
var curTb = _commonUtils.GetTableByEntity(exp.Type);
|
||||
_commonExpression.ExpressionWhereLambda(_tables, _tableRule, Expression.MakeMemberAccess(exp, curTb.Properties[curTb.ColumnsByCs.First().Value.CsName]), null, null, null);
|
||||
_commonExpression.ExpressionWhereLambda(_tables, _tableRule, Expression.MakeMemberAccess(exp, curTb.Properties[curTb.ColumnsByCs.First().Value.CsName]), _diymemexpWithTempQuery, null, null);
|
||||
break;
|
||||
}
|
||||
return this;
|
||||
@ -459,7 +484,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
_isIncluded = true;
|
||||
_tables[0].Parameter = navigateSelector.Parameters[0];
|
||||
_commonExpression.ExpressionWhereLambda(_tables, _tableRule, Expression.MakeMemberAccess(expBody, tb.Properties[tb.ColumnsByCs.First().Value.CsName]), null, null, null);
|
||||
_commonExpression.ExpressionWhereLambda(_tables, _tableRule, Expression.MakeMemberAccess(expBody, tb.Properties[tb.ColumnsByCs.First().Value.CsName]), _diymemexpWithTempQuery, null, null);
|
||||
return this;
|
||||
}
|
||||
|
||||
@ -536,7 +561,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (tbNav == null) throw new Exception(CoreStrings.TypeError_CannotUse_IncludeMany(typeof(TNavigate).FullName));
|
||||
|
||||
if (collMem.Expression.NodeType != ExpressionType.Parameter)
|
||||
_commonExpression.ExpressionWhereLambda(_tables, _tableRule, Expression.MakeMemberAccess(collMem.Expression, tb.Properties[tb.ColumnsByCs.First().Value.CsName]), null, null, null);
|
||||
_commonExpression.ExpressionWhereLambda(_tables, _tableRule, Expression.MakeMemberAccess(collMem.Expression, tb.Properties[tb.ColumnsByCs.First().Value.CsName]), _diymemexpWithTempQuery, null, null);
|
||||
|
||||
TableRef tbref = null;
|
||||
var tbrefOneToManyColumns = new List<List<MemberExpression>>(); //临时 OneToMany 三个表关联,第三个表需要前两个表确定
|
||||
@ -1377,7 +1402,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var map = new ReadAnonymousTypeInfo();
|
||||
var field = new StringBuilder();
|
||||
var index = 0;
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, select.Body, this, null, _whereGlobalFilter, findIncludeMany, null, true);
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, select.Body, this, _diymemexpWithTempQuery, _whereGlobalFilter, findIncludeMany, null, true);
|
||||
var af = new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null);
|
||||
if (findIncludeMany.Any() == false) return await this.ToListMapReaderPrivateAsync<TReturn>(af, null, cancellationToken);
|
||||
|
||||
@ -1410,7 +1435,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
var otherMap = new ReadAnonymousTypeInfo();
|
||||
field.Clear();
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, otherMap, ref index, otherNewInit, this, null, _whereGlobalFilter, null, null, true);
|
||||
_commonExpression.ReadAnonymousField(_tables, _tableRule, field, otherMap, ref index, otherNewInit, this, _diymemexpWithTempQuery, _whereGlobalFilter, null, null, true);
|
||||
var otherRet = new List<object>();
|
||||
var otherAf = new ReadAnonymousTypeOtherInfo(field.ToString(), otherMap, otherRet);
|
||||
|
||||
|
@ -35,6 +35,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2>.WithTempQuery<TDto>(Expression<Func<T1, T2, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2>.Avg<TMember>(Expression<Func<T1, T2, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -171,14 +177,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2> ISelect<T1, T2>.WhereIf(bool condition, Expression<Func<T1, T2, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2>.Any(Expression<Func<T1, T2, bool>> exp)
|
||||
@ -186,7 +192,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -201,6 +207,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2>).WithTempQuery<TDto>((Expression<Func<T1, T2, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -388,7 +400,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -489,6 +501,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3>.WithTempQuery<TDto>(Expression<Func<T1, T2, T3, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3>.Avg<TMember>(Expression<Func<T1, T2, T3, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -625,14 +643,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2, T3> ISelect<T1, T2, T3>.WhereIf(bool condition, Expression<Func<T1, T2, T3, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2, T3>.Any(Expression<Func<T1, T2, T3, bool>> exp)
|
||||
@ -640,7 +658,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -655,6 +673,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2, T3>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2, T3>).WithTempQuery<TDto>((Expression<Func<T1, T2, T3, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2, T3>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -842,7 +866,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -945,6 +969,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4>.WithTempQuery<TDto>(Expression<Func<T1, T2, T3, T4, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4>.Avg<TMember>(Expression<Func<T1, T2, T3, T4, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -1081,14 +1111,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2, T3, T4> ISelect<T1, T2, T3, T4>.WhereIf(bool condition, Expression<Func<T1, T2, T3, T4, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2, T3, T4>.Any(Expression<Func<T1, T2, T3, T4, bool>> exp)
|
||||
@ -1096,7 +1126,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -1111,6 +1141,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2, T3, T4>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2, T3, T4>).WithTempQuery<TDto>((Expression<Func<T1, T2, T3, T4, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2, T3, T4>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -1298,7 +1334,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -1403,6 +1439,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5>.WithTempQuery<TDto>(Expression<Func<T1, T2, T3, T4, T5, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5>.Avg<TMember>(Expression<Func<T1, T2, T3, T4, T5, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -1539,14 +1581,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2, T3, T4, T5> ISelect<T1, T2, T3, T4, T5>.WhereIf(bool condition, Expression<Func<T1, T2, T3, T4, T5, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2, T3, T4, T5>.Any(Expression<Func<T1, T2, T3, T4, T5, bool>> exp)
|
||||
@ -1554,7 +1596,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -1569,6 +1611,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2, T3, T4, T5>).WithTempQuery<TDto>((Expression<Func<T1, T2, T3, T4, T5, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -1756,7 +1804,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -1863,6 +1911,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6>.WithTempQuery<TDto>(Expression<Func<T1, T2, T3, T4, T5, T6, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6>.Avg<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -1999,14 +2053,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2, T3, T4, T5, T6> ISelect<T1, T2, T3, T4, T5, T6>.WhereIf(bool condition, Expression<Func<T1, T2, T3, T4, T5, T6, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2, T3, T4, T5, T6>.Any(Expression<Func<T1, T2, T3, T4, T5, T6, bool>> exp)
|
||||
@ -2014,7 +2068,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -2029,6 +2083,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2, T3, T4, T5, T6>).WithTempQuery<TDto>((Expression<Func<T1, T2, T3, T4, T5, T6, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -2216,7 +2276,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -2325,6 +2385,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7>.WithTempQuery<TDto>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7>.Avg<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -2461,14 +2527,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2, T3, T4, T5, T6, T7> ISelect<T1, T2, T3, T4, T5, T6, T7>.WhereIf(bool condition, Expression<Func<T1, T2, T3, T4, T5, T6, T7, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2, T3, T4, T5, T6, T7>.Any(Expression<Func<T1, T2, T3, T4, T5, T6, T7, bool>> exp)
|
||||
@ -2476,7 +2542,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -2491,6 +2557,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2, T3, T4, T5, T6, T7>).WithTempQuery<TDto>((Expression<Func<T1, T2, T3, T4, T5, T6, T7, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -2678,7 +2750,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -2789,6 +2861,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8>.WithTempQuery<TDto>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8>.Avg<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -2925,14 +3003,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2, T3, T4, T5, T6, T7, T8> ISelect<T1, T2, T3, T4, T5, T6, T7, T8>.WhereIf(bool condition, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2, T3, T4, T5, T6, T7, T8>.Any(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, bool>> exp)
|
||||
@ -2940,7 +3018,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -2955,6 +3033,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2, T3, T4, T5, T6, T7, T8>).WithTempQuery<TDto>((Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -3142,7 +3226,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -3255,6 +3339,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9>.WithTempQuery<TDto>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9>.Avg<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -3391,14 +3481,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9>.WhereIf(bool condition, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9>.Any(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, bool>> exp)
|
||||
@ -3406,7 +3496,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -3421,6 +3511,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9>).WithTempQuery<TDto>((Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -3608,7 +3704,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -3723,6 +3819,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>.WithTempQuery<TDto>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>.Avg<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -3859,14 +3961,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>.WhereIf(bool condition, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>.Any(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, bool>> exp)
|
||||
@ -3874,7 +3976,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -3889,6 +3991,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>).WithTempQuery<TDto>((Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -4076,7 +4184,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -4193,6 +4301,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>.WithTempQuery<TDto>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>.Avg<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -4329,14 +4443,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>.WhereIf(bool condition, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>.Any(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, bool>> exp)
|
||||
@ -4344,7 +4458,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -4359,6 +4473,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>).WithTempQuery<TDto>((Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -4546,7 +4666,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -4665,6 +4785,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>.WithTempQuery<TDto>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>.Avg<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -4801,14 +4927,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>.WhereIf(bool condition, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>.Any(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, bool>> exp)
|
||||
@ -4816,7 +4942,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -4831,6 +4957,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>).WithTempQuery<TDto>((Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -5018,7 +5150,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -5139,6 +5271,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>.WithTempQuery<TDto>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>.Avg<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -5275,14 +5413,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>.WhereIf(bool condition, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>.Any(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, bool>> exp)
|
||||
@ -5290,7 +5428,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -5305,6 +5443,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>).WithTempQuery<TDto>((Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -5492,7 +5636,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -5615,6 +5759,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.WithTempQuery<TDto>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.Avg<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -5751,14 +5901,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.WhereIf(bool condition, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.Any(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, bool>> exp)
|
||||
@ -5766,7 +5916,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -5781,6 +5931,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>).WithTempQuery<TDto>((Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -5968,7 +6124,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -6093,6 +6249,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.WithTempQuery<TDto>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.Avg<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -6229,14 +6391,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.WhereIf(bool condition, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.Any(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, bool>> exp)
|
||||
@ -6244,7 +6406,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -6259,6 +6421,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>).WithTempQuery<TDto>((Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -6446,7 +6614,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -6573,6 +6741,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.WithTempQuery<TDto>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.Avg<TMember>(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -6709,14 +6883,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.WhereIf(bool condition, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.Any(Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, bool>> exp)
|
||||
@ -6724,7 +6898,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -6739,6 +6913,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.WithTempQuery<TDto>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>).WithTempQuery<TDto>((Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.Avg<TMember>(Expression<Func<HzyTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -6926,7 +7106,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
|
@ -32,7 +32,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
public override string ParseExp(Expression[] members)
|
||||
{
|
||||
if (members.Any() == false) return _map.DbField;
|
||||
ParseExpMapResult = null;
|
||||
if (members.Any() == false)
|
||||
{
|
||||
ParseExpMapResult = _map;
|
||||
return _map.DbField;
|
||||
}
|
||||
var parentName = ((members.FirstOrDefault() as MemberExpression)?.Expression as MemberExpression)?.Member.Name;
|
||||
switch (parentName)
|
||||
{
|
||||
@ -43,6 +48,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
read = read.Childs.Where(z => z.CsName == (members[a] as MemberExpression)?.Member.Name).FirstOrDefault();
|
||||
if (read == null) return null;
|
||||
}
|
||||
ParseExpMapResult = read;
|
||||
return read.DbField;
|
||||
case "Value":
|
||||
var tb = _tables.First();
|
||||
@ -192,6 +198,19 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
public string ToSql(string field) => InternalToSql(field);
|
||||
|
||||
public ISelect<TDto> WithTempQuery<TDto>(Expression<Func<ISelectGroupingAggregate<TKey, TValue>, TDto>> selector)
|
||||
{
|
||||
if (_orm.CodeFirst.IsAutoSyncStructure)
|
||||
(_orm.CodeFirst as CodeFirstProvider)._dicSycedTryAdd(typeof(TDto)); //._dicSyced.TryAdd(typeof(TReturn), true);
|
||||
var ret = (_orm as BaseDbProvider).CreateSelectProvider<TDto>(null) as Select1Provider<TDto>;
|
||||
if (ret._tables[0].Table == null) ret._tables[0].Table = TableInfo.GetDefaultTable(typeof(TDto));
|
||||
var parser = new Select0Provider.WithTempQueryParser(_select, this, selector, ret._tables[0]);
|
||||
var sql = this.ToSql(parser._insideSelectList[0].InsideField);
|
||||
ret.WithSql(sql);
|
||||
ret._diymemexpWithTempQuery = parser;
|
||||
return ret;
|
||||
}
|
||||
|
||||
public ISelectGrouping<TKey, TValue> Skip(int offset)
|
||||
{
|
||||
_groupBySkip = offset;
|
||||
|
@ -120,6 +120,8 @@ public interface ISelect<<#=NewStr #>> : ISelect0<ISelect<<#=NewStr #>>, T1> <#=
|
||||
|
||||
ISelect<<#=NewStr #>> WithSql(<#=string.Join(",",WithSql)#>, object parms = null);
|
||||
|
||||
ISelect<TDto> WithTempQuery<TDto>(Expression<Func<<#=NewStr #>, TDto>> selector);
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
bool Any(Expression<Func<HzyTuple<<#=NewStr #>>, bool>> exp);
|
||||
@ -150,6 +152,8 @@ public interface ISelect<<#=NewStr #>> : ISelect0<ISelect<<#=NewStr #>>, T1> <#=
|
||||
ISelect<<#=NewStr #>> OrderByDescending<TMember>(Expression<Func<HzyTuple<<#=NewStr #>>, TMember>> column);
|
||||
ISelect<<#=NewStr #>> OrderByIf<TMember>(bool condition, Expression<Func<HzyTuple<<#=NewStr #>>, TMember>> column, bool descending = false);
|
||||
|
||||
ISelect<TDto> WithTempQuery<TDto>(Expression<Func<HzyTuple<<#=NewStr #>>, TDto>> selector);
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
@ -83,6 +83,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
ISelect<TDto> ISelect<<#=NewStr #>>.WithTempQuery<TDto>(Expression<Func<<#=NewStr #>, TDto>> selector)
|
||||
{
|
||||
for (var a = 0; a < selector.Parameters.Count; a++) _tables[a].Parameter = selector.Parameters[a];
|
||||
return this.InternalWithTempQuery<TDto>(selector);
|
||||
}
|
||||
|
||||
double ISelect<<#=NewStr #>>.Avg<TMember>(Expression<Func<<#=NewStr #>, TMember>> column)
|
||||
{
|
||||
if (column == null) return default(double);
|
||||
@ -219,14 +225,14 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (exp == null) return this.Where(null);
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
ISelect<<#=NewStr #>> ISelect<<#=NewStr #>>.WhereIf(bool condition, Expression<Func<<#=NewStr #>, bool>> exp)
|
||||
{
|
||||
if (condition == false || exp == null) return this;
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params));
|
||||
return this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params));
|
||||
}
|
||||
|
||||
bool ISelect<<#=NewStr #>>.Any(Expression<Func<<#=NewStr #>, bool>> exp)
|
||||
@ -234,7 +240,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return this.Any();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).Any();
|
||||
var ret = this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).Any();
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
@ -249,6 +255,12 @@ namespace FreeSql.Internal.CommonProvider
|
||||
|
||||
#region HzyTuple 元组
|
||||
|
||||
ISelect<TDto> ISelect<<#=NewStr #>>.WithTempQuery<TDto>(Expression<Func<HzyTuple<<#=NewStr #>>, TDto>> selector)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(selector, _tables);
|
||||
return (this as ISelect<<#=NewStr #>>).WithTempQuery<TDto>((Expression<Func<<#=NewStr #>, TDto>>)expModify);
|
||||
}
|
||||
|
||||
double ISelect<<#=NewStr #>>.Avg<TMember>(Expression<Func<HzyTuple<<#=NewStr #>>, TMember>> column)
|
||||
{
|
||||
var expModify = new CommonExpression.ReplaceHzyTupleToMultiParam().Modify(column, _tables);
|
||||
@ -436,7 +448,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
if (exp == null) return await this.AnyAsync();
|
||||
for (var a = 0; a < exp.Parameters.Count; a++) _tables[a].Parameter = exp.Parameters[a];
|
||||
var oldwhere = _where.ToString();
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, null, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
var ret = await this.Where(_commonExpression.ExpressionWhereLambda(_tables, _tableRule, exp?.Body, _diymemexpWithTempQuery, _whereGlobalFilter, _params)).AnyAsync(cancellationToken);
|
||||
_where.Clear().Append(oldwhere);
|
||||
return ret;
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
@ -15,6 +16,7 @@ namespace FreeSql.Internal.Model
|
||||
public Type CsType { get; set; }
|
||||
public Type MapType { get; set; }
|
||||
public string DbField { get; set; }
|
||||
public string DbNestedField { get; set; }
|
||||
public ConstructorInfo Consturctor { get; set; }
|
||||
public List<ReadAnonymousTypeInfo> Childs = new List<ReadAnonymousTypeInfo>();
|
||||
public TableInfo Table { get; set; }
|
||||
@ -31,12 +33,37 @@ namespace FreeSql.Internal.Model
|
||||
target.CsType = CsType;
|
||||
target.MapType = MapType;
|
||||
target.DbField = DbField;
|
||||
target.DbNestedField = DbNestedField;
|
||||
target.Consturctor = Consturctor;
|
||||
target.Childs = Childs;
|
||||
LocalEachCopyChilds(Childs, target.Childs);
|
||||
target.Table = Table;
|
||||
target.IsEntity = IsEntity;
|
||||
target.IsDefaultCtor = IsDefaultCtor;
|
||||
target.IncludeManyKey = IncludeManyKey;
|
||||
|
||||
void LocalEachCopyChilds(List<ReadAnonymousTypeInfo> from, List<ReadAnonymousTypeInfo> to)
|
||||
{
|
||||
foreach(var fromChild in from)
|
||||
{
|
||||
var toChild = new ReadAnonymousTypeInfo();
|
||||
fromChild.CopyTo(toChild);
|
||||
to.Add(toChild);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<ReadAnonymousTypeInfo> GetAllChilds(int maxDepth = 10)
|
||||
{
|
||||
if (maxDepth <= 0) return new List<ReadAnonymousTypeInfo>();
|
||||
var allchilds = new List<ReadAnonymousTypeInfo>();
|
||||
foreach (var child in Childs)
|
||||
{
|
||||
if (child.Childs.Any())
|
||||
allchilds.AddRange(child.GetAllChilds(maxDepth - 1));
|
||||
else
|
||||
allchilds.Add(child);
|
||||
}
|
||||
return allchilds;
|
||||
}
|
||||
}
|
||||
public class ReadAnonymousTypeAfInfo
|
||||
|
@ -50,6 +50,18 @@ namespace FreeSql.Internal.Model
|
||||
}
|
||||
public IEnumerable<KeyValuePair<string, TableRef>> GetAllTableRef() => _refs;
|
||||
|
||||
public static TableInfo GetDefaultTable(Type type) => new TableInfo
|
||||
{
|
||||
CsName = type.Name,
|
||||
DbName = type.Name,
|
||||
DisableSyncStructure = true,
|
||||
Primarys = new ColumnInfo[0],
|
||||
ColumnsByPosition = new ColumnInfo[0],
|
||||
ColumnsByCanUpdateDbUpdateValue = new ColumnInfo[0],
|
||||
Properties = type.GetPropertiesDictIgnoreCase(),
|
||||
Type = type,
|
||||
};
|
||||
|
||||
//public void CopyTo(TableInfo target)
|
||||
//{
|
||||
// target.Type = this.Type;
|
||||
|
Reference in New Issue
Block a user