lamda postgresql mysql 联合查询_postgresql 数据库,联合查询是否有问题?

肯定是有问题的,我自己下载sqlsugar源码跟踪调试找到了问题,在sqlsugar项目中PostgreSQLQueryBuilder.cs文件里

对于复杂模型,也就是多表联合查询,带有AS .的sql语句判断的正则表达式原始如下

public override bool IsComplexModel(string sql)

{

return Regex.IsMatch(sql, @"AS \w+\.\w+");

}

多表联合的语句如下:

SELECT "r"."isdeleted" AS "role.isdeleted" , "r"."name" AS "role.name" , "r"."description" AS "role.description" , "r"."ordersort" AS "role.ordersort" , "r"."enabled" AS "role.enabled" , "r"."createid" AS "role.createid" , "r"."createby" AS "role.createby" , "r"."createtime" AS "role.createtime" , "r"."modifyid" AS "role.modifyid" , "r"."modifyby" AS "role.modifyby" , "r"."modifytime" AS "role.modifytime" , "r"."id" AS "role.id" , "m"."isdeleted" AS "modules.isdeleted" , "m"."parentid" AS "modules.parentid" , "m"."name" AS "modules.name" , "m"."linkurl" AS "modules.linkurl" , "m"."area" AS "modules.area" , "m"."controller" AS "modules.controller" , "m"."action" AS "modules.action" , "m"."icon" AS "modules.icon" , "m"."code" AS "modules.code" , "m"."ordersort" AS "modules.ordersort" , "m"."description" AS "modules.description" , "m"."ismenu" AS "modules.ismenu" , "m"."enabled" AS "modules.enabled" , "m"."createid" AS "modules.createid" , "m"."createby" AS "modules.createby" , "m"."createtime" AS "modules.createtime" , "m"."modifyid" AS "modules.modifyid" , "m"."modifyby" AS "modules.modifyby" , "m"."modifytime" AS "modules.modifytime" , "m"."id" AS "modules.id" , "rmp"."isdeleted" AS "isdeleted" FROM "rolemodulepermission" rmp Left JOIN "modules" m ON ( "rmp"."moduleid" = "m"."id" ) Left JOIN "role" r ON ( "rmp"."roleid" = "r"."id" ) WHERE ((( "rmp"."isdeleted" = @IsDeleted0 ) AND ( "m"."isdeleted" = @IsDeleted1 )) AND ( "r"."isdeleted" = @IsDeleted2 ))

AS "role.i 作者意思应该是匹配AS 加上. ,漏掉了双引号,匹配不上,然后后面就按通常模型去构建数据了,造成上面我说的那个问题,我把正则表达式改成下面这样

public override bool IsComplexModel(string sql)

{

return Regex.IsMatch(sql, @"AS\s""\w+\.\w+");

}

程序就通了,可以登录上了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值