一对多导航查询 .Any() 功能问题 返回

SqlSugar 沟通中
9 764
该叫什么 夏末 发布于2024/6/3
悬赏:0 飞吻

阿尼亚 你好呀!

我发现当需要一对多导航查询,是否存在值时,有不方便的地方

_db.QueryableWithAttr<PatientMakeEntity>()
    .Includes(p => p.ChildList)
    .Select(p => new PatientMakeInfo
    {
        Id = p.Id,
        IsHad = p.ChildList.Any(), //报错 表xx 不存在.
     }).ToList();
     
//----------------------------------------------------------     

_db.QueryableWithAttr<PatientMakeEntity>()
    .Includes(p => p.ChildList)
    .Select(p => new PatientMakeInfo
    {
        Id = p.Id,
        IsHad = p.ChildList.ToList(), //正常,后续通过列表元素个数判断是否有值.
     }).ToList();

能否通过.Any()直接返回是否有值呢? 望回复,非常感谢!

热忱回答9

  • 你这个是表不存在,和数据存不存在没有关系

    0 回复
  • 夏末 夏末 VIP0
    2024/6/3

    同服务器,跨库

    0 回复
  • _db.QueryableWithAttr<PatientMakeEntity>() 
        .Select(p => new PatientMakeInfo
        {
            Id = p.Id,
            IsHad = p.ChildList.Any(), //报错 表xx 不存在.
         }).ToList();
          

    这样就行了include都不需要,如晨报表不存在,就是表不存在看数据生成的SQL为什么报错

    0 回复
  • AOP看SQL 

    0 回复
  • 看一下SQL是什么样子,可能要配置dblink

    0 回复
  • 夏末 夏末 VIP0
    2024/6/3

    @fate sta同服务器,跨库, 表确定是存在的, 就是用.Any()时会报错表不存在,用.ToList()正常

    0 回复
  • @夏末:我在问你要SQL,回答重点

    0 回复
  • 要看你生成的SQL为什么不符合默认要求,特殊的要配置dblink

    0 回复
  • 夏末 夏末 VIP0
    2024/6/4

    @fate sta

            var list = await _db.AsTenant().QueryableWithAttr<PatientMakeEntity>()
                .Where(queryExp.ToExpression())
                .Select(p => new PatientMakeInfo
                {
                    Id = p.Id,
                    IsHeightMgmt = p.ChildList.Any(),
                }).ToListAsync();
                
    // "msg": "Table 'panda_up.children' doesn't exist"
    // children 表是 panda_hm 的
    SELECT  `id` AS `Id` , ( EXISTS  (SELECT 1 FROM `children`  WHERE  `MakeId`=`p`.`id`   )  )  
    FROM `tp_patient_make` `p`  
    WHERE  (`create_atime` BETWEEN 1717376887 AND 1717549687)


    您有空帮看一下,  我感觉是.Any()目前的功能不能这样用

    0 回复