mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	增加 IncludeMany 变异多级单元测试
This commit is contained in:
		@@ -467,20 +467,39 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
								subSelect.Where(Expression.Lambda<Func<TNavigate, bool>>(
 | 
			
		||||
									Expression.Call(null, containsMethod, arrExp, refCol), otmExpParm1));
 | 
			
		||||
							} else {
 | 
			
		||||
								var otmExpParm1 = Expression.Parameter(typeof(TNavigate), "a");
 | 
			
		||||
								Expression expOr = null;
 | 
			
		||||
								foreach (var item in list) {
 | 
			
		||||
									Expression expAnd = null;
 | 
			
		||||
								var subSelectT1Alias = (subSelect as Select1Provider<TNavigate>)._tables[0].Alias;
 | 
			
		||||
								Dictionary<string, bool> sbDic = new Dictionary<string, bool>();
 | 
			
		||||
								for (var y = 0; y < list.Count; y++) {
 | 
			
		||||
									var sbWhereOne = new StringBuilder();
 | 
			
		||||
									sbWhereOne.Append("(");
 | 
			
		||||
									for (var z = 0; z < tbref.Columns.Count; z++) {
 | 
			
		||||
										var colVal = getListValue(item, tbref.Columns[z].CsName);
 | 
			
		||||
										var expTmp = Expression.Equal(Expression.MakeMemberAccess(otmExpParm1, tbref2.Properties[tbref.RefColumns[0].CsName]), Expression.Constant(colVal));
 | 
			
		||||
										if (z == 0) expAnd = expTmp;
 | 
			
		||||
										else expAnd = Expression.AndAlso(expAnd, expTmp);
 | 
			
		||||
										if (z > 0) sbWhereOne.Append(" AND ");
 | 
			
		||||
										sbWhereOne.Append(_commonUtils.FormatSql($"{subSelectT1Alias}.{_commonUtils.QuoteSqlName(tbref.RefColumns[z].Attribute.Name)}={{0}}", getListValue(list[y], tbref.Columns[z].CsName)));
 | 
			
		||||
									}
 | 
			
		||||
									if (expOr == null) expOr = expAnd;
 | 
			
		||||
									else expOr = Expression.OrElse(expOr, expAnd);
 | 
			
		||||
									sbWhereOne.Append(")");
 | 
			
		||||
									var whereOne = sbWhereOne.ToString();
 | 
			
		||||
									sbWhereOne.Clear();
 | 
			
		||||
									if (sbDic.ContainsKey(whereOne) == false) sbDic.Add(whereOne, true);
 | 
			
		||||
								}
 | 
			
		||||
								subSelect.Where(Expression.Lambda<Func<TNavigate, bool>>(expOr, otmExpParm1));
 | 
			
		||||
								var sbWhere = new StringBuilder();
 | 
			
		||||
								foreach (var sbd in sbDic)
 | 
			
		||||
									sbWhere.Append(" OR ").Append(sbd.Key);
 | 
			
		||||
								subSelect.Where(sbWhere.Remove(0, 4).ToString());
 | 
			
		||||
								sbWhere.Clear();
 | 
			
		||||
								//var otmExpParm1 = Expression.Parameter(typeof(TNavigate), "a");
 | 
			
		||||
								//Expression expOr = null;
 | 
			
		||||
								//foreach (var item in list) {
 | 
			
		||||
								//	Expression expAnd = null;
 | 
			
		||||
								//	for (var z = 0; z < tbref.Columns.Count; z++) {
 | 
			
		||||
								//		var colVal = getListValue(item, tbref.Columns[z].CsName);
 | 
			
		||||
								//		var expTmp = Expression.Equal(Expression.MakeMemberAccess(otmExpParm1, tbref2.Properties[tbref.RefColumns[z].CsName]), Expression.Constant(colVal));
 | 
			
		||||
								//		if (z == 0) expAnd = expTmp;
 | 
			
		||||
								//		else expAnd = Expression.AndAlso(expAnd, expTmp);
 | 
			
		||||
								//	}
 | 
			
		||||
								//	if (expOr == null) expOr = expAnd;
 | 
			
		||||
								//	else expOr = Expression.OrElse(expOr, expAnd);
 | 
			
		||||
								//}
 | 
			
		||||
								//subSelect.Where(Expression.Lambda<Func<TNavigate, bool>>(expOr, otmExpParm1));
 | 
			
		||||
							}
 | 
			
		||||
							then?.Invoke(subSelect);
 | 
			
		||||
							var subList = subSelect.ToList(true);
 | 
			
		||||
@@ -543,10 +562,10 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
						if (true) {
 | 
			
		||||
							var tbref2 = _commonUtils.GetTableByEntity(tbref.RefEntityType);
 | 
			
		||||
							var tbrefMid = _commonUtils.GetTableByEntity(tbref.RefMiddleEntityType);
 | 
			
		||||
							var sbJoin = new StringBuilder().Append($"{_commonUtils.QuoteSqlName(tbrefMid.DbName)} midtb ON");
 | 
			
		||||
							var sbJoin = new StringBuilder().Append($"{_commonUtils.QuoteSqlName(tbrefMid.DbName)} midtb ON ");
 | 
			
		||||
							for (var z = 0; z < tbref.RefColumns.Count; z++) {
 | 
			
		||||
								if (z > 0) sbJoin.Append(" AND");
 | 
			
		||||
								sbJoin.Append($" midtb.{_commonUtils.QuoteSqlName(tbref.MiddleColumns[tbref.Columns.Count + z].Attribute.Name)} = a.{_commonUtils.QuoteSqlName(tbref.RefColumns[z].Attribute.Name)}");
 | 
			
		||||
								if (z > 0) sbJoin.Append(" AND ");
 | 
			
		||||
								sbJoin.Append($"midtb.{_commonUtils.QuoteSqlName(tbref.MiddleColumns[tbref.Columns.Count + z].Attribute.Name)} = a.{_commonUtils.QuoteSqlName(tbref.RefColumns[z].Attribute.Name)}");
 | 
			
		||||
							}
 | 
			
		||||
							subSelect.InnerJoin(sbJoin.ToString());
 | 
			
		||||
							sbJoin.Clear();
 | 
			
		||||
@@ -556,9 +575,9 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
								Dictionary<string, bool> sbDic = new Dictionary<string, bool>();
 | 
			
		||||
								for (var y = 0; y < list.Count; y++) {
 | 
			
		||||
									var sbWhereOne = new StringBuilder();
 | 
			
		||||
									sbWhereOne.Append(" (");
 | 
			
		||||
									sbWhereOne.Append("(");
 | 
			
		||||
									for (var z = 0; z < tbref.Columns.Count; z++) {
 | 
			
		||||
										if (z > 0) sbWhereOne.Append(" AND");
 | 
			
		||||
										if (z > 0) sbWhereOne.Append(" AND ");
 | 
			
		||||
										sbWhereOne.Append(_commonUtils.FormatSql($" midtb.{_commonUtils.QuoteSqlName(tbref.MiddleColumns[z].Attribute.Name)}={{0}}", getListValue(list[y], tbref.Columns[z].CsName)));
 | 
			
		||||
									}
 | 
			
		||||
									sbWhereOne.Append(")");
 | 
			
		||||
@@ -568,7 +587,7 @@ namespace FreeSql.Internal.CommonProvider {
 | 
			
		||||
								}
 | 
			
		||||
								var sbWhere = new StringBuilder();
 | 
			
		||||
								foreach (var sbd in sbDic)
 | 
			
		||||
									sbWhere.Append(" OR").Append(sbd.Key);
 | 
			
		||||
									sbWhere.Append(" OR ").Append(sbd.Key);
 | 
			
		||||
								subSelect.Where(sbWhere.Remove(0, 3).ToString());
 | 
			
		||||
								sbWhere.Clear();
 | 
			
		||||
							}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user