这个错误是偶发性吗? 返回

SqlSugar 老数据
6 323

image.png

做数据权限时需要用到这个部分代码:

 Expressionable<MenuInfo> exp = new Expressionable<MenuInfo>();

                  exp.And(a => a.isDel == 1);


 exp.And(a => SqlFunc.Subqueryable<DepartmentUserInfo>().LeftJoin<DepartmentInfo>((ab, ab1) => ab1.Id == ab.DepartmentId).LeftJoin<DataPermissionInfo>((ab, ab1, ab2) => ab2.RoleCode == ab1.DepartmentId).LeftJoin<UserInfo>((ab, ab1, ab2, ab3) => ab3.RoleId == ab2.RoleId).Where((ab, ab1, ab2, ab3) => ab2.RoleType == 3 && ab3.Id == getUserId() && a.CreateUserId == ab.UserId).Any());

 return DbContext.Instance.Queryable<MenuInfo>().Where(exp.ToExpression()).ToPageList(pageSize, pageCount, ref totalCount);

发现执行的时候  ab1.DepartmentId  没有替换为 ab1.department_id

热忱回答6

  • 大微 大微 VIP0
    2022/11/24

    [SugarColumn(IsIgnore =true)]

            public string DepartmentId{ get; set; }


    这样行不


    0 回复
  • 大微 大微 VIP0
    2022/11/24

    [SugarColumn(ColumnName ="DepartmentId")]

               public DateTime? _DepartmentId {get;set;}

            [SugarColumn(IsIgnore =true)]

            public string DepartmentId{ get; set; }


    0 回复
  • 菜鸟 菜鸟 VIP0
    2022/11/24

    @大微:是可以的,

     /// <summary>

                /// 父部门ID(0代表的是公司)

                /// </summary>

                /// <value></value>

                [SugarColumn(ColumnName = "DepartmentId", ColumnDescription = "父部门ID(0代表的是公司)", IsNullable = true, ColumnDataType = "Nvarchar(50)")]

               public string DepartmentId { get; set; }

    把表名中的字段和实例名定义一样,也是可以解决的

    0 回复
  • 大微 大微 VIP0
    2022/11/24

    @菜鸟:哦哦,我也遇到一个问题,如果导航插入的话,表没有主键,那应该怎么插入呢,我在论坛问没有人回我

    0 回复
  • 菜鸟 菜鸟 VIP0
    2022/11/24

    @大微:虽然我没有这么做过,我只能提供一个思路

    第一种:不需要主键 使用字典保存 比如

    db.Insertable<Dictionary<string,object>>(new   { name="",price=1 })
                    .AS("[Order]")
                    .ExecuteCommand();

    第二种:建一个主键,只是数据,不起作用

    0 回复
  • 大微 大微 VIP0
    2022/11/24

    @菜鸟:第一种,导航插入不支持,我加了个主键,感觉应该是可以的,但是不知道有啥方法哎

    0 回复