sqlguar odbc驱动有bug 返回

SqlSugar 待处理
1 315

odbc驱动5.1.4.166生成的sql语句有些问题:主要是on后面的表达式引号位置有问题:odbc驱动表达式 "Grxx.GRZH" = "Grzhxx.GRZH" 应该是  "Grxx"."GRZH = "Grzhxx"."GRZH",完整的例子:

_Original_temTable.AsQueryable()
                    .InnerJoin(query_Grzhxx,
                    (Grxx, Grzhxx) => Grxx.Grzh == Grzhxx.GRZH && Grxx.Zxbh == Grzhxx.ZXBH).ToList();


生成的sql语句:

SELECT
    省略...

FROM
    "temTable_GRXX" "Grxx"
INNER JOIN(
        SELECT
            *
        FROM
            (
                省略...
            ) MergeTable
    ) "Grzhxx" ON
    (
        (
            "Grxx.GRZH" = "Grzhxx.GRZH"
        )
        AND(
            "Grxx.ZXBH" = "Grzhxx.ZXBH"
        )
    )


热忱回答1

  • 为森 为森 VIP0
    1个月前

    已解决,在源码中的ExpressionsToSql/ExpressionContext.cs 的GetTranslationColumnName 函数中在IsCorrectErrorSqlParameterName为真时存在问题,下面是修改后的代码。

    if (this.SugarContext?.Context?.CurrentConnectionConfig?.MoreSettings?.IsCorrectErrorSqlParameterName == true) 
    {    if (IsTranslationText(columnName.Replace(" ", ""))) return columnName;    else if (columnName.Contains(UtilConstants.Dot))
        {        return string.Join(UtilConstants.Dot, columnName.Split(UtilConstants.DotChar).Select(it => GetTranslationText(it)));
        }    else
            return GetTranslationText(columnName);
    }


    0 回复