我有一个包含列表的实体。而且每个列表项都有对我实体的引用。
public class Pack
{
public Guid Id {get; set;}
public string Name {get; set;}
public List<Media> Medias {get; set;}
}
public class Media
{
public Guid Id {get; set;}
public string Name {get; set;}
public Guid PackId {get; set;}
public Pack Pack {get; set;}
}
如您所见,这是经典的一对多关系。
我想从包括Packs
的数据库中获取Medias
,因此我编写了以下代码:
public List<Pack> GetPacks(){
return _dbContext.Pack.Where(x=>x.IsActive == true).Include(x=>x.Medias).ToList();
}
当我收到包含Packs
的{{1}}时,我就遇到了递归联接的问题。
我得到Medias
和Packs
的信息,但是每个Medias
都再次引用了Media
。结果如下:
Pack
简而言之,当我在选择{ //pack
Name: ...
Medias: [{Id: ..., Pack: {Name: ... Medias: [{.. Pack: { ... Medias...
}
时包括Medias
时,我遇到了递归引用问题。
这是什么原因?
答案 0 :(得分:1)
在您的[JsonIgnore]
类的Pack
属性上方添加Media
。
[JsonIgnore]
public Pack Pack { get; set; }
使用查询时,结果为
[{
"id":"555d42a1-914e-4976-119b-08d84400ba5a",
"name":"My Package",
"medias":
[{
"id":"db406c89-ea4b-4e55-6621-08d84400ba50",
"name":"New Media",
"packId":"555d42a1-914e-4976-119b-08d84400ba5a"
}]
}]
因此,您仅包含PackId
,而不包含整个Pack
。