达梦8数据库,使用无实体查询时,生成的sql有问题 返回

使用SqlsugarCore5.1.4.112版本,
代码语句为:busDB.SqlQueryable<esse_QYDLB_EmployeeIdent>(searchSql).Where(whereConModels).ToListAsync()
生成的Sql为
SELECT t.* FROM
(
SELECT c."Id", c."IdentCode", a."OrganId", b."Account", b."Name", b."UserId", c."BirthDate", c."HireDate", d."Id" AS busId, d."QUYU" AS AreaName, d."SW" AS OrganName, d."GW" AS PostName
FROM esse_org."esse_org_organ_relation" a Inner JOIN esse_org."esse_org_organ_relation_user" b
ON (a."Id" = b."OrganRelationId")
Left JOIN esse_bus."esse_bpm_QYDLBMBJHB_employeeident" c
ON (b."Account" = c."Account")
Left JOIN esse_bus."esse_bpm_QYDLBMBJHB_QYDLBMBJHB_main" d
ON (b."Account" = d."XM")
where a."OrganId" in ('99068') and a."OrganTypeId" = '1438401863824314369' and b."IsPrimary" = 0 and (b."AreaId" is null )
) t
WHERE ( "t"."Account" LIKE N'%%' OR "t"."Name" LIKE N'%%' )
报无法解析的成员访问表达式["t"."Account"]这个错误
热忱回答(17)
-
爱吃肉的路飞 VIP0
2周前升级成最新版本也会报这个错误
0 回复 -
fate sta VIP0
2周前我看SQL没有错
0 回复 -
fate sta VIP0
2周前你去数据库工具跑能不能跑起来
0 回复 -
爱吃肉的路飞 VIP0
2周前@fate sta:跑不起来,需要把"t"."Account"]改为t."Account"才行,t不能有双引号
0 回复 -
fate sta VIP0
2周前那你就不要加啊
0 回复 -
fate sta VIP0
2周前我知道了你用的表格查询
0 回复 -
fate sta VIP0
2周前前缀去掉就行了
0 回复 -
fate sta VIP0
2周前你这个查询条件没必要有前缀
0 回复 -
爱吃肉的路飞 VIP0
2周前@fate sta:不是我加的,我传入的sql没有外面一层,sql语句如下
"SELECT c.\"Id\", c.\"IdentCode\", a.\"OrganId\", b.\"Account\", b.\"Name\", b.\"UserId\", c.\"BirthDate\", c.\"HireDate\", d.\"Id\" AS busId, d.\"QUYU\" AS AreaName, d.\"SW\" AS OrganName, d.\"GW\" AS PostName FROM " + CommonName.OrgConfigId + ".\"esse_org_organ_relation\" a Inner JOIN " + CommonName.OrgConfigId + ".\"esse_org_organ_relation_user\" b ON (a.\"Id\" = b.\"OrganRelationId\") Left JOIN " + CommonName.BusConfigId + ".\"esse_bpm_QYDLBMBJHB_employeeident\" c ON (b.\"Account\" = c.\"Account\") Left JOIN " + CommonName.BusConfigId + ".\"esse_bpm_QYDLBMBJHB_QYDLBMBJHB_main\" d ON (b.\"Account\" = d.\"XM\") where a.\"OrganId\" in ('" + string.Join("','", organIds) + "') and a.\"OrganTypeId\" = '" + organTypeId + "' and b.\"IsPrimary\" = 0 and b.\"AreaId\" is null";
外面这层是因为有个where查询条件,orm生成的时候变成这样的
0 回复 -
爱吃肉的路飞 VIP0
2周前@fate sta:orm生成的时候,生成查询达梦数据库的语句时,在t这个地方多加了双引号
0 回复 -
fate sta VIP0
2周前0 回复 -
fate sta VIP0
2周前这个条件不是你加的吗 ,不加哪来的前缀
0 回复 -
fate sta VIP0
2周前如果还有问题提供一简单的,可以重现问题的示例
0 回复 -
爱吃肉的路飞 VIP0
1周前@fate sta:问题确实是因为where里面造成的,现在就碰到一个问题,我这个查询sql里面三个表中,每个表都会有name字段,我就在where里面指定是哪个name,才会造成orm执行时候外面增加了一层
SELECT t.* FROM
(
)t ,因为这几个表不在一个库里面,是在同一台达梦数据库服务器上建立不同的库,现在需要连表查询,我看了教程里面针对达梦的同服务器连表查询没有具体的demo
现在这个问题就没法解决了
0 回复 -
fate sta VIP0
1周前你先把SQL想好怎么写
0 回复 -
fate sta VIP0
1周前把SQL写出来
0 回复 -
爱吃肉的路飞 VIP0
1周前@fate sta:因为是一个低代码系统,查询条件都是与前端商定好的,做好解析后List<IConditionalModel>形式作为查询条件,而不是直接变成sql语句的,解析的方法是公用的。所以后面where里面的这个List<IConditionalModel>数组必须有,而且查询的时候可能会有Name这种多张表都有的字段,使用sql语句是因为跨库的方法QueryableWithAttr达梦用不了才是用sql
0 回复