关联表查询生成sql语句问题 返回

SqlSugar
20 155

映射表查询的时候,如果当中间表没有查出数据的时候,第三张表生成的sql语句有问题


image.pngimage.png

热忱回答20

  • 提供原生用例代码

    0 回复
  • @fate sta

    就是文档里面的,主键换成Guid类型的,当不存在关系表的时候查询,第三种生成的sql  guid   in('')

    image.png

    0 回复
  • 提供你的代码文档功能是没问题的,不用怀疑

    0 回复
  • 0 回复
  • @fate sta


    image.png


    image.png

    0 回复
  • @fate sta

    用的5.0版本


    image.png

    0 回复
  • @没有谁离不开:提供下载DEMO

    0 回复
  • @fate sta


    https://gitee.com/SeaLee/sql-sugar-demo

    0 回复
  •        var data = new SqlSugarDemo.UserEntity()
                {
                    CardNo = "",
                    CompanyWX = "",
                    Credential = "",
                    EmailAccount = "",
                    EndDate = DateTime.Now,
                    FailedLoginPwdCount = 1,
                    IsChangePassword = true,
                    IsReal = 1,
                    LastLoginDate = DateTime.Now,
                    ManageAccount = Guid.NewGuid(),
                    ManageOrg = Guid.NewGuid(),
                    NickName = "",
                    PhoneAccount = "",
                    RealName = "",
                    VerificationLoginPwdDate = DateTime.Now,
                    SafePhone = "",
                    Sex = 1,
                    StartDate = DateTime.Now,
                    StopLoginTime = DateTime.Now,
                    UserAccount = "",
                    UserId = Guid.NewGuid(),
                    UserType = 1
                };
                db.Insertable(data).ExecuteCommand();
                var role = new SqlSugarDemo.RoleEntity()
                {
                     RoleId=Guid.NewGuid(),
                       ManageAccount= Guid.NewGuid(),
                      ManageOrg=Guid.NewGuid(),
                       OrganizationId=Guid.NewGuid(),
                        UnitPrice=1,
                         Quantity=1,
                          RoleName="",
                           RoleType=1,
                            SortNum=1
                };
                db.Insertable(role).ExecuteCommand();
                db.Insertable(new SqlSugarDemo.UserRoleEntity()
                {
                     RoleId= role.RoleId,
                     UserId=data.UserId
                }).ExecuteCommand();
                var d111111111111 = db.Queryable<SqlSugarDemo.UserEntity>()
                  .Mapper<SqlSugarDemo.UserEntity, SqlSugarDemo.RoleEntity, SqlSugarDemo.UserRoleEntity>(it => ManyToMany.Config(it.UserId, it.RoleId)).InSingle(data.UserId);

    你的例子我用源码测了是没问题的,上面是用例,是不是你GUID存的有问题,或者有空的

    0 回复
  • 你可以拿我上面的数据测一下

    0 回复
  • image.png

    0 回复
  • @fate sta


    都有数据是好的啊,我一开始就说啦,加一个账号,如果角色和账号角色关系这两个为空的时候,没有关系的时候,这样查就会报错

    0 回复
  • @fate sta


    一开始只是创建了账号,没有分配角色的时候,查询账号就报错啦,按理来说,对应的角色应该是null的才对

    0 回复
  • @没有谁离不开:角色是Null  , UserRole也不会有值

    0 回复
  • 这样也不会有问题

    0 回复
  • @fate sta

    你把角色和账号角色关系表删了,在执行下,就会报错了,生成的角色sql 查询会有问题


    0 回复
  • @fate sta

    当没有关系数据的时候,这样关联查询就会报错了,角色 guid类型的主键查询有bug

    var data = new SqlSugarDemo.UserEntity()
                {
                    CardNo = "",
                    CompanyWX = "",
                    Credential = "",
                    EmailAccount = "",
                    EndDate = DateTime.Now,
                    FailedLoginPwdCount = 1,
                    IsChangePassword = true,
                    IsReal = 1,
                    LastLoginDate = DateTime.Now,
                    ManageAccount = Guid.NewGuid(),
                    ManageOrg = Guid.NewGuid(),
                    NickName = "",
                    PhoneAccount = "",
                    RealName = "",
                    VerificationLoginPwdDate = DateTime.Now,
                    SafePhone = "",
                    Sex = 1,
                    StartDate = DateTime.Now,
                    StopLoginTime = DateTime.Now,
                    UserAccount = "",
                    UserId = Guid.NewGuid(),
                    UserType = 1
                };
                db.Insertable(data).ExecuteCommand();
             
                var d111111111111 = db.Queryable<SqlSugarDemo.UserEntity>()
                  .Mapper<SqlSugarDemo.UserEntity, SqlSugarDemo.RoleEntity, SqlSugarDemo.UserRoleEntity>(it => ManyToMany.Config(it.UserId, it.RoleId)).InSingle(data.UserId);


    0 回复
  • 可以重现了下个版本修复

    0 回复
  • 源码更新过了,急的话可以下载源码编译DLL

    0 回复
  • @fate sta:好的,谢谢大佬支持~~

    0 回复