关于导航子表,子表中又有父子关系的查询问题 返回
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 VIP0
2023/2/18不要用双主键
0 回复 -
fate sta VIP0
2023/2/18https://www.donet5.com/Home/Doc?typeId=2366 提供完整的用例,有数据的 暂时看不出你这个有什么问题
0 回复 -
bensonlz VIP0
2023/2/18@fate sta:刚才代码贴错了,A1表不是双主键,请问这样的情况下,怎么把A1下面ParantItem有父节点的数据取出来?
0 回复 -
bensonlz VIP0
2023/2/18@fate sta:ParantID存的是Code代码
0 回复 -
fate sta VIP0
2023/2/18@bensonlz:为了更好的帮助到你,请提供完整代码,可以重现的 。不然我这边也不是很清楚哪有问题。
0 回复 -
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 VIP0
2023/2/21@bensonlz:现在可以用了吗
0 回复 -
bensonlz VIP0
2023/2/21@fate sta:可以了
0 回复