mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	- 撤销 #1727
This commit is contained in:
		@@ -25,8 +25,7 @@ namespace FreeSql.Internal
 | 
				
			|||||||
        public ParameterExpression _lambdaParameter;
 | 
					        public ParameterExpression _lambdaParameter;
 | 
				
			||||||
        public ReadAnonymousTypeInfo _map;
 | 
					        public ReadAnonymousTypeInfo _map;
 | 
				
			||||||
        public string _field;
 | 
					        public string _field;
 | 
				
			||||||
        public ReadAnonymousTypeInfo ParseExpMapResult { get; internal protected set; }
 | 
					        public ReadAnonymousTypeInfo ParseExpMapResult { get; protected set; }
 | 
				
			||||||
        public ColumnInfo ParseExpColumnResult { get; internal protected set; }
 | 
					 | 
				
			||||||
        public abstract string ParseExp(Expression[] members);
 | 
					        public abstract string ParseExp(Expression[] members);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -860,10 +859,8 @@ namespace FreeSql.Internal
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Type oldMapType = null;
 | 
					            Type oldMapType = null;
 | 
				
			||||||
            if (tsc.diymemexp != null) tsc.diymemexp.ParseExpColumnResult = null;
 | 
					 | 
				
			||||||
            var left = ExpressionLambdaToSql(leftExp, tsc);
 | 
					            var left = ExpressionLambdaToSql(leftExp, tsc);
 | 
				
			||||||
            var leftMapColumn = SearchColumnByField(tsc._tables, tsc.currentTable, left) ?? 
 | 
					            var leftMapColumn = SearchColumnByField(tsc._tables, tsc.currentTable, left);
 | 
				
			||||||
                tsc.diymemexp?.ParseExpColumnResult; //group by emum -> MapType(string) #1727
 | 
					 | 
				
			||||||
            var isLeftMapType = leftMapColumn != null && new[] { "AND", "OR", "*", "/", "+", "-" }.Contains(oper) == false && (leftMapColumn.Attribute.MapType != rightExp.Type || leftMapColumn.CsType != rightExp.Type);
 | 
					            var isLeftMapType = leftMapColumn != null && new[] { "AND", "OR", "*", "/", "+", "-" }.Contains(oper) == false && (leftMapColumn.Attribute.MapType != rightExp.Type || leftMapColumn.CsType != rightExp.Type);
 | 
				
			||||||
            ColumnInfo rightMapColumn = null;
 | 
					            ColumnInfo rightMapColumn = null;
 | 
				
			||||||
            var isRightMapType = false;
 | 
					            var isRightMapType = false;
 | 
				
			||||||
@@ -873,7 +870,6 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                (leftMapColumn.Table.AsTableColumn == leftMapColumn && rightExp.IsParameter() == false)) ? //自动分表
 | 
					                (leftMapColumn.Table.AsTableColumn == leftMapColumn && rightExp.IsParameter() == false)) ? //自动分表
 | 
				
			||||||
                formatSql(Expression.Lambda(rightExp).Compile().DynamicInvoke(), leftMapColumn.Attribute.MapType, leftMapColumn, tsc.dbParams) :
 | 
					                formatSql(Expression.Lambda(rightExp).Compile().DynamicInvoke(), leftMapColumn.Attribute.MapType, leftMapColumn, tsc.dbParams) :
 | 
				
			||||||
                ExpressionLambdaToSql(rightExp, tsc);
 | 
					                ExpressionLambdaToSql(rightExp, tsc);
 | 
				
			||||||
            if (isLeftMapType) tsc.SetMapTypeReturnOld(leftMapColumn.Attribute.MapType);
 | 
					 | 
				
			||||||
            if (right != "NULL" && isLeftMapType &&
 | 
					            if (right != "NULL" && isLeftMapType &&
 | 
				
			||||||
                //判断参数化后的bug
 | 
					                //判断参数化后的bug
 | 
				
			||||||
                !(right.Contains('@') || right.Contains('?') || right.Contains(':')) &&
 | 
					                !(right.Contains('@') || right.Contains('?') || right.Contains(':')) &&
 | 
				
			||||||
@@ -900,7 +896,6 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                        (rightMapColumn.Table.AsTableColumn == rightMapColumn && leftExp.IsParameter() == false)) ? //自动分表
 | 
					                        (rightMapColumn.Table.AsTableColumn == rightMapColumn && leftExp.IsParameter() == false)) ? //自动分表
 | 
				
			||||||
                        formatSql(Expression.Lambda(leftExp).Compile().DynamicInvoke(), rightMapColumn.Attribute.MapType, rightMapColumn, tsc.dbParams) :
 | 
					                        formatSql(Expression.Lambda(leftExp).Compile().DynamicInvoke(), rightMapColumn.Attribute.MapType, rightMapColumn, tsc.dbParams) :
 | 
				
			||||||
                        ExpressionLambdaToSql(leftExp, tsc);
 | 
					                        ExpressionLambdaToSql(leftExp, tsc);
 | 
				
			||||||
                    if (isRightMapType) tsc.SetMapTypeReturnOld(rightMapColumn.Attribute.MapType);
 | 
					 | 
				
			||||||
                    if (left != "NULL" && isRightMapType &&
 | 
					                    if (left != "NULL" && isRightMapType &&
 | 
				
			||||||
                        //判断参数化后的bug
 | 
					                        //判断参数化后的bug
 | 
				
			||||||
                        !(left.Contains('@') || left.Contains('?') || left.Contains(':')) &&
 | 
					                        !(left.Contains('@') || left.Contains('?') || left.Contains(':')) &&
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,11 +36,9 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
        public override string ParseExp(Expression[] members)
 | 
					        public override string ParseExp(Expression[] members)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            ParseExpMapResult = null;
 | 
					            ParseExpMapResult = null;
 | 
				
			||||||
            ParseExpColumnResult = null;
 | 
					 | 
				
			||||||
            if (members.Any() == false)
 | 
					            if (members.Any() == false)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                ParseExpMapResult = _map;
 | 
					                ParseExpMapResult = _map;
 | 
				
			||||||
                ParseExpColumnResult = ParseExpMapResult.GetColumn();
 | 
					 | 
				
			||||||
                return _map.DbField;
 | 
					                return _map.DbField;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            var firstMember = ((members.FirstOrDefault() as MemberExpression)?.Expression as MemberExpression);
 | 
					            var firstMember = ((members.FirstOrDefault() as MemberExpression)?.Expression as MemberExpression);
 | 
				
			||||||
@@ -55,7 +53,6 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
                        if (read == null) return null;
 | 
					                        if (read == null) return null;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    ParseExpMapResult = read;
 | 
					                    ParseExpMapResult = read;
 | 
				
			||||||
                    ParseExpColumnResult = ParseExpMapResult.GetColumn();
 | 
					 | 
				
			||||||
                    if (!_addFieldAlias) return read.DbField;
 | 
					                    if (!_addFieldAlias) return read.DbField;
 | 
				
			||||||
                    if (_flagNestedFieldAlias) return read.DbField;
 | 
					                    if (_flagNestedFieldAlias) return read.DbField;
 | 
				
			||||||
                    if (_comonExp.EndsWithDbNestedField(read.DbField, read.DbNestedField) == false)
 | 
					                    if (_comonExp.EndsWithDbNestedField(read.DbField, read.DbNestedField) == false)
 | 
				
			||||||
@@ -85,7 +82,6 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
                                members[a] = replaceVistor.Modify(members[a], replaceMember, curtable.Parameter);
 | 
					                                members[a] = replaceVistor.Modify(members[a], replaceMember, curtable.Parameter);
 | 
				
			||||||
                            var ret = _select._diymemexpWithTempQuery.ParseExp(members);
 | 
					                            var ret = _select._diymemexpWithTempQuery.ParseExp(members);
 | 
				
			||||||
                            ParseExpMapResult = _select._diymemexpWithTempQuery.ParseExpMapResult;
 | 
					                            ParseExpMapResult = _select._diymemexpWithTempQuery.ParseExpMapResult;
 | 
				
			||||||
                            ParseExpColumnResult = ParseExpMapResult.GetColumn();
 | 
					 | 
				
			||||||
                            return ret;
 | 
					                            return ret;
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
@@ -134,10 +130,7 @@ namespace FreeSql.Internal.CommonProvider
 | 
				
			|||||||
                                return null;
 | 
					                                return null;
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    var tsc = new CommonExpression.ExpTSC { _tables = _tables, _tableRule = _select._tableRule, tbtype = SelectTableInfoType.From, isQuoteName = true, isDisableDiyParse = true, style = CommonExpression.ExpressionStyle.Where };
 | 
					                    return _comonExp.ExpressionLambdaToSql(retExp, new CommonExpression.ExpTSC { _tables = _tables, _tableRule = _select._tableRule, tbtype = SelectTableInfoType.From, isQuoteName = true, isDisableDiyParse = true, style = CommonExpression.ExpressionStyle.Where });
 | 
				
			||||||
                    var result = _comonExp.ExpressionLambdaToSql(retExp, tsc);
 | 
					 | 
				
			||||||
                    ParseExpColumnResult = tsc.mapColumnTmp;
 | 
					 | 
				
			||||||
                    return result;
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            return null;
 | 
					            return null;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user