使用 ConditionalModel 查询出现错误:Unknown column 'roleId' in 'where 返回

SqlSugar 沟通中
7 563

查询代码:

await _context.Queryable<User>()
                .Includes(p => p.Auth_Roles)
                .Where(where).Where(advance)
                .Select(p => new
                {
                    Id = p.Id,
                    UserName = p.UserName,
                    Name = p.Name,
                    Email = p.Email,
                    PhoneNumber = p.PhoneNumber,
                    RoleId = SqlFunc.IIF(p.Auth_Roles.Any(), p.Auth_Roles.FirstOrDefault().Id, 0),
                    RoleName = SqlFunc.IIF(p.Auth_Roles.Any(), p.Auth_Roles.FirstOrDefault().Name, null),
                    Enabled = p.LockoutEnabled ? false : true,
                    IsDeleted = p.IsDeleted
                })
                .MergeTable()
                .ToPageListAsync(query.PageIndex, query.PageSize, total);


查询条件:

[{"ConditionalList":[{"Key":0,"Value":{"FieldName":"roleId","FieldValue":1,"ConditionalType":1}}]}]


热忱回答7

  • AOP看一下报错SQL

    0 回复
  • @fate sta

    SELECT Count(*) FROM  (SELECT  `Id` AS `Id` , `UserName` AS `UserName` , `Name` AS `Name` , `Email` AS `Email` , `PhoneNumber` AS `PhoneNumber` , `TenantId` AS `TenantId` , (SELECT `Name` FROM `tenant`  WHERE  `p`.`TenantId`=`Id`   ) AS `TenantName` , `OrganizeId` AS `OrganizeId` , (SELECT `Name` FROM `organize`  WHERE  `p`.`OrganizeId`=`Id`   ) AS `OrganizeName` , ( CASE  WHEN ( `LockoutEnabled` = @LockoutEnabled2 ) THEN @MethodConst3  ELSE @MethodConst4 END ) AS `Enabled` , `IsDeleted` AS `IsDeleted` ,`p`.`Id` AS SugarNav_Id,`p`.`TenantId` AS SugarNav_TenantId,`p`.`OrganizeId` AS SugarNav_OrganizeId FROM `auth_user` `p`  WHERE   `TenantId` = @ConditTenantId0   AND `OrganizeId`   IS   NULL    AND `IsDeleted` = @ConditIsDeleted2     AND  (   `roleId` LIKE @ConditroleId10000   )   ) MergeTable


    0 回复
  • 确实没有roleId列


    0 回复
  • @fate sta:没有条件查询是可以查询的,添加条件后会出现这个错误,有解决方案么


    0 回复
  • 你数据库没有这列肯定报错。。

    0 回复
  • var entityInfo= db.EntityMaintenance.GetEntityInfoNoCache(typeof(Order));
     
     Console.WriteLine(entityInfo.DbTableName);//输出表名
     
    foreach (var column in entityInfo.Columns)
    {
      Console.WriteLine(column.ColumnDescription);//输出列的信息 column.xxx
    }


    你可以 实体管理有没有这个例。。有这个列才加入条件

    0 回复
  • @fate sta:这是其他表的字段,想用include级联查询出来

    0 回复