Asp.net 防止即时加载包含所包含实体的子级(停止自引用循环)
我有两个具有多对多关系的实体。当我使用Include()加载一个实体时,它会加载子实体,还包括子实体的子实体。我不想要孙子 我关闭了延迟加载:LazyLoadingEnabled=false;我忽略了自引用循环:Asp.net 防止即时加载包含所包含实体的子级(停止自引用循环),asp.net,asp.net-mvc,entity-framework,Asp.net,Asp.net Mvc,Entity Framework,我有两个具有多对多关系的实体。当我使用Include()加载一个实体时,它会加载子实体,还包括子实体的子实体。我不想要孙子 我关闭了延迟加载:LazyLoadingEnabled=false;我忽略了自引用循环: config.Formatters.JsonFormatter.SerializerSettings .ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling .Ignore; 为了更好地解释事情:
config.Formatters.JsonFormatter.SerializerSettings
.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling
.Ignore;
为了更好地解释事情:
public class A
{
public int Id { get; set; }
public ICollection<B> Bs { get; set; }
}
public class B
{
public int Id { get; set; }
public ICollection<A> As { get; set; }
}
我得到的JSON看起来像这样:
[
{
"Id": 1,
"Bs": [
{
"Id": 1,
"As": [
{
"Id": 2,
"Bs": [
...
},
{
"Id": 2,
"Bs": [
{
"Id": 1,
"As": [
{
"Id": 1,
"Bs": [
...
传递自引用实体似乎真的很浪费。有什么方法可以防止这种情况发生吗?我在类B中的As属性中添加了Newtonsoft.Json.JsonIgnoreAttribute
public class B
{
public int Id { get; set; }
[JsonIgnore]
public ICollection<A> As { get; set; }
}
public class B
{
public int Id { get; set; }
[JsonIgnore]
public ICollection<A> As { get; set; }
}
PM> Install-Package Newtonsoft.Json