关于导航子表,子表中又有父子关系的查询问题 返回

SqlSugar 老数据
8 1154

public class A

{

    [SugarColumn(IsPrimaryKey=true)]

    public string AID {get;set;}

    

    Navigate(NavigateType.OneToMany, nameof( A1.AID))]

    pulic List< A1> ListA1 {get; set;}

}


public class A1

{

    [SugarColumn(IsPrimaryKey=true)]

    public string AID {get;set;}

    

     public string Code  {get;set;}


    public string? ParantID  {get;set;}

    

    [Navigate(NavigateType.OneToOne,nameof(ParantID))]

    public A1 ParantItem {get;set;}

}

 主表A下面有个子表A1,A1表内有个父子关系,ParantID存的是Code代码,但是不是所有ParantID都会有值,所以想查询的时候把A1的ParantItem也显示出来

var result=db.Queryable<A>()

                     .Includes(a=>a.ListA1 ,a1=>a1.ParantItem )

                        .ToList();


以上是sqlsugar代码,但是查询出来的ParantItem始终是null,请问这个代码该怎么改? 


热忱回答(8)

  • fate sta fate sta VIP0
    2023/2/18

    不要用双主键

    0 回复
  • fate sta fate sta VIP0
    2023/2/18

    https://www.donet5.com/Home/Doc?typeId=2366   提供完整的用例,有数据的 暂时看不出你这个有什么问题

    0 回复
  • bensonlz bensonlz VIP0
    2023/2/18

    @fate sta:刚才代码贴错了,A1表不是双主键,请问这样的情况下,怎么把A1下面ParantItem有父节点的数据取出来?

    0 回复
  • bensonlz bensonlz VIP0
    2023/2/18

    @fate sta:ParantID存的是Code代码

    0 回复
  • fate sta fate sta VIP0
    2023/2/18

    @bensonlz:为了更好的帮助到你,请提供完整代码,可以重现的 。不然我这边也不是很清楚哪有问题。

    0 回复
  • bensonlz bensonlz VIP0
    2023/2/21

    经过排查后发现是映射的字段关系标识错误,后来更改完整代码如下:

    public class A

    {

        [SugarColumn(IsPrimaryKey=true)]

        public string AID {get;set;}

        

        Navigate(NavigateType.OneToMany, nameof( A1.AID))]

        pulic List< A1> ListA1 {get; set;}

    }


    public class A1

    {

        public string AID {get;set;}


         [SugarColumn(IsPrimaryKey=true)]

         public string Code  {get;set;}

         public string Tag {get;set;}

        public string? ParantID  {get;set;}

        

        [Navigate(NavigateType.OneToOne,nameof(ParantID))]

        public A1 ParantItem {get;set;}

      

            [Navigate(NavigateType.OneToMany, nameof(ParantID))]

            public List<A1> Child { get;set;}

    }

     主表A下面有个子表A1,A1表内有个父子关系,ParantID存的是Code代码,但是不是所有ParantID都会有值,所以想查询的时候把A1的ParantItem也显示出来,并且还可以把Child一起显示出来。

    var result=db.Queryable<A>()

                         .Includes(a=>a.ListA1.Where(mx => mx.Tag == "父").ToList(), mx => mx.Child,a1=>a1.ParantItem )

                            .ToList();




    0 回复
  • fate sta fate sta VIP0
    2023/2/21

    @bensonlz:现在可以用了吗

    0 回复
  • bensonlz bensonlz VIP0
    2023/2/21

    @fate sta:可以了

    0 回复