where 子查询中表名 错误, 返回

SqlSugar
6 139


测试用例

        private static void Subquery()

        {

            Console.WriteLine("");

            Console.WriteLine("#### Subquery Start ####");

            var db = GetInstance();


            var list = db.Queryable<Orders>().Take(10).Select(it => new

            {

                customName=SqlFunc.Subqueryable<Custom>().Where("it.CustomId=id").Select(s=>s.Name),

                customName2 = SqlFunc.Subqueryable<Custom>().Where("it.CustomId = id").Where(s => true).Select(s => s.Name)

            }).ToList();


            var list2 = db.Queryable<Orders>().Where(it => SqlFunc.Subqueryable<OrderItem>().Where(i => i.OrderId == it.Id).Any()).ToList();


            Console.WriteLine("#### Subquery End ####");

        }


最后生成的SQL:


 SELECT Id,Name,Price,CreateTime,CustomId FROM Orders it  WHERE (EXISTS ( SELECT * FROM OrderItem i  WHERE ( OrderId = it.Id ) )) 


OrderItem 是类名, 真实表名应该是 OrderDetail , 这段SQL 是在哪里生成的, 怎么调试。

热忱回答6

  • fate sta fate sta VIP0
    2022/12/5

    实体发出来

    并且提供sqlsugar版本号

    0 回复
  • fate sta fate sta VIP0
    2022/12/5

    数据库类型是什么

    0 回复
  • fate sta fate sta VIP0
    2022/12/5

    本地未重现 用的官网源码中的DEMO

    image.png

    0 回复
  • fate sta fate sta VIP0
    2022/12/5

    SELECT [Id],[Name],[Price],[CreateTime],[CustomId] FROM [Order] it  WHERE (EXISTS ( SELECT * FROM [OrderDetail] [i]  WHERE ( [OrderId] = [it].[Id] ) ))

    0 回复
  • hua0129 hua0129 VIP0
    2022/12/6


    我用的 sqlsugar 11.17 日 master 的版本。我用的是一个自定义的数据库。 


    SELECT [Id],[Name],[Price],[CreateTime],[CustomId] FROM [Order] it  WHERE (EXISTS ( SELECT * FROM [OrderDetail] [i]  WHERE ( [OrderId] = [it].[Id] ) ))

    你这个测试用的是哪个数据库,我看能否对比测试下。

    @fate sta

    0 回复
  • fate sta fate sta VIP0
    2022/12/7

    @hua0129:老版本可能有BUG以新版本为主

    0 回复