mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 04:18:16 +08:00
- 修复 因兼容 #184 导致 MySql Enum 表达式解析为 int 的 bug;
- 修复 FreeSql.Provider.MySqlConnector Enum 自定义元素值,导致值计算错误的 bug;
This commit is contained in:
@ -489,7 +489,9 @@ namespace FreeSql.Internal
|
||||
var right = ExpressionLambdaToSql(rightExp, tsc);
|
||||
if (right != "NULL" && isLeftMapType &&
|
||||
//判断参数化后的bug
|
||||
!(right.Contains('@') || right.Contains('?') || right.Contains(':')))
|
||||
!(right.Contains('@') || right.Contains('?') || right.Contains(':')) &&
|
||||
//三元表达式后,取消此条件 #184
|
||||
tsc.mapType != null)
|
||||
{
|
||||
var enumType = leftMapColumn.CsType.NullableTypeOrThis();
|
||||
if (enumType.IsEnum)
|
||||
@ -505,7 +507,9 @@ namespace FreeSql.Internal
|
||||
left = ExpressionLambdaToSql(leftExp, tsc);
|
||||
if (left != "NULL" && isRightMapType &&
|
||||
//判断参数化后的bug
|
||||
!(left.Contains('@') || left.Contains('?') || left.Contains(':')))
|
||||
!(left.Contains('@') || left.Contains('?') || left.Contains(':')) &&
|
||||
//三元表达式后,取消此条件 #184
|
||||
tsc.mapType != null)
|
||||
{
|
||||
var enumType = rightMapColumn.CsType.NullableTypeOrThis();
|
||||
if (enumType.IsEnum)
|
||||
@ -598,7 +602,12 @@ namespace FreeSql.Internal
|
||||
case ExpressionType.Constant: return formatSql((exp as ConstantExpression)?.Value, tsc.mapType, tsc.mapColumnTmp, null);
|
||||
case ExpressionType.Conditional:
|
||||
var condExp = exp as ConditionalExpression;
|
||||
return _common.IIF(ExpressionLambdaToSql(condExp.Test, tsc), ExpressionLambdaToSql(condExp.IfTrue, tsc), ExpressionLambdaToSql(condExp.IfFalse, tsc));
|
||||
var conditionalTestOldMapType = tsc.SetMapTypeReturnOld(null);
|
||||
var conditionalTestSql = ExpressionLambdaToSql(condExp.Test, tsc);
|
||||
tsc.SetMapTypeReturnOld(conditionalTestOldMapType);
|
||||
var conditionalSql = _common.IIF(conditionalTestSql, ExpressionLambdaToSql(condExp.IfTrue, tsc), ExpressionLambdaToSql(condExp.IfFalse, tsc));
|
||||
tsc.SetMapTypeReturnOld(null);
|
||||
return conditionalSql;
|
||||
case ExpressionType.Call:
|
||||
tsc.mapType = null;
|
||||
var exp3 = exp as MethodCallExpression;
|
||||
|
@ -406,8 +406,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
case ExpressionType.Equal:
|
||||
var equalBinaryExp = body as BinaryExpression;
|
||||
_set.Append(", ").Append(_commonExpression.ExpressionWhereLambdaNoneForeignObject(null, _table, null, equalBinaryExp.Left, null, null))
|
||||
.Append(" = ").Append(_commonExpression.ExpressionWhereLambdaNoneForeignObject(null, _table, null, equalBinaryExp.Right, null, null));
|
||||
_set.Append(", ").Append(_commonExpression.ExpressionWhereLambdaNoneForeignObject(null, _table, null, body, null, null));
|
||||
return this;
|
||||
case ExpressionType.MemberInit:
|
||||
var initExp = body as MemberInitExpression;
|
||||
|
Reference in New Issue
Block a user